[Notes/Domino] LotusScript でビューのカテゴリがあるかどうかを判定する方法
ビューのカテゴリは文書に参照権限が無い場合でも表示される、という件は前回述べましたが、最近とある案件でこのことを利用し、LotusScript からカテゴリがあるかどうかを判定しようとして、小一時間ほど悩んでしまいました(x_x)
同じことで悩む人もいるかもしれませんので、経緯などをログっときます。
やりたいこと
ビューに特定のカテゴリがあるかどうかを判定。文書に対して参照権限が無い場合でも、カテゴリが見えている場合には「ある」と判定させたい。
試したこと
まず、Evaluate({@DbColumn("";"NoCache"; ""; "ビュー名"; 1) = "チェックしたい値"}) としてやれば、カテゴリがあるかどうかは簡単にチェックできます。が、@DbColumn の戻り値は 64KB で、この案件では 64KB を超えることがあるかもしれないので、却下。
次に、NotesView.CreateViewNavFromCategory で NotesViewNavigator を返して、その中身をチェックすることを考えましたが、文書に参照権限が無い場合も、本当にカテゴリが無い場合も、両方とも Count が 0 になって区別ができません……。
では、ということで、NotesView.CreateViewNav で全体の NotesViewNavigator を作成し、GetNextCategory でカテゴリを全部なめればいいかな、と思ってやってみたところ、カテゴリ数が多いと滅茶苦茶時間がかかることが判明(x_x)
回避方法
で、結局どうしたかというと、ビューの方を細工しまして。1列目がカテゴリなわけですが、2列目に1列目とまったく同じカテゴリ列を挿入することで回避しました。こうすれば、必ず1列目と2列目が同じカテゴリになり、NotesView.CreateViewNavFromCategory で返った NotesViewNavigator の Count が 0 なら本当にカテゴリが無いことになり、1(以上)ならカテゴリがあることになります(文書に参照権限があっても無くても結果は同じ)。
かなり無理矢理チックな感じではありますので、他に良いやり方があれば、ぜひコメントしてくださいませm(_ _)m
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。