ユーザー名の漢字名を得る

現在操作中のユーザーの漢字名を得たい場合、こんな感じにするといい。

公開アドレス帳(DominoDirectory)のユーザー文書の適当なフィールドに漢字名をいれておけば、現在のユーザー名で@DbLookup()をかければ、漢字名を得ることができる。 例えば、[Comment]というフィールドに漢字名をいれておくことにする。

現在のユーザー名の求め方はいろいろあるけど、@UserName()なら、"CN=yac/O=tech" などが手に入る。これはユーザー文書の[FullName]フィールの名前を返すようだ。 ということは、1列目に"CN=yac/O=tech"を表示するビューを用意し、@DbLookup()を@UserName()をKeyにして、漢字名がセットされている[Common]フィールドを取得すれば、漢字名が手に入る。

検索用ビューの用意

Domino Directory(names.nsf)に"UserNameto"というビューを作る。人が読むものじゃないので、「(UserNameto)」の方がいいかもしれない。

ビューの選択条件には「Peopleフォームを選択」にしておき、1列だけ用意する。この1列目に@UserName()で得られる文字列("CN=yac/O=tech"など)を出すようにする。

ウチの例だと、[FullName]フィールドには、"CN=yac/O=tech"と"yac"の2種類の文字列がセットされているようだ。ビューに"CN=yac/O=tech"の方だけを出したいなら、 ビューの1列目の式にFullName[1]という式を書いておけばよさそうだが、1つめかどうかは保障の限りではない。

やや強引な手だが、1列目をFullNameを表示するように設定し、「複数値を別のエントリーで表示」にすれば、このビューには実際に登録されているユーザーの2倍の情報が表示されてしまうがまぁいいかも。

もうちょっとだけまともにするなら、1列目に「@If(@Contains(FullName[1];"CN=");FullName[1]; FullName[2])) 」という式を書くのもいいかもしれない。これも、複数値の1つめ、2つめのどちらかにほしい 文字列があると決めウチしてわけだが。

漢字名検索用のJavaScript

さて、XPages上で漢字名を検索したいなら、以下のようなScriptを書けばいい。

var kanjiname = @DbLookup([database.getServer(), "names.nsf"], "UserNameTo", @UserName(), "Comment");

ユーザー文書に所属や会社名をいれておけば、それらを取ってくるのも同じ要領でできる。