ノーツアプリケーション開発 hint & tips 101連発

116
ノーツアプリケーション開発 Hints & Tips 101 連発 株式会社ソルクシーズ 吉田 武司 IBM Lotus/Domino Application Development Hints and Tips Version 1.0.0

Upload: takeshi-yoshida

Post on 26-Jan-2017

943 views

Category:

Software


4 download

TRANSCRIPT

Page 1: ノーツアプリケーション開発 Hint & tips 101連発

ノーツアプリケーション開発Hints & Tips 101 連発

株式会社ソルクシーズ

吉田武司

IBM Lotus/Domino Application Development Hints and Tips

Version 1.0.0

Page 2: ノーツアプリケーション開発 Hint & tips 101連発

特記事項

• 本資料の掲載内容は、できる限り正確を期するように努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。

• 本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。

• 掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する事はご遠慮下さい。

• 当資料をコピー等で複製することは、執筆者の承諾なしではできません。

• IBM®、Lotus®、WebSphere® は、International Business Machines Corporation の米国およびその他の国における商標です。

• Google および Google ロゴ、Android および Android ロゴ、Gmail、YouTube および YouTube ロゴ、Picasa、Google Play とそのロゴ、Chrome、Chrome OS、Chromebook、Chromebooks for Work、Chromebox for meetings、Chrome Management Consoleは、Google Inc の商標または登録商標です。

• Microsoft, Encarta, MSN, およびWindows は、米国Microsoft Corporation の、米国およびその他の国における登録商標または商標です。

• Salesforce、Chatter、Sales Cloud、Service Cloud、Marketing Cloud、Salesforce Work.com、AppExchange、Salesforce Platform、および関連する全てのロゴは、salesforce.com,inc. の商標です。

• OracleとJavaはOracle Corporationおよびその関連企業の登録商標です。

• Twilio は Twilio, Inc. の登録商標あるいは商標です。

• Cloud Shared Office、CSO は株式会社ソルクシーズの登録商標です。

• 当資料に掲載された製品名または会社名はそれぞれの各社の商標または登録商標です。

• 一部イラストは、「ピクト缶」様を利用させて頂きました。感謝しております。(http://www.pictcan.com/)

2

Page 3: ノーツアプリケーション開発 Hint & tips 101連発

はじめに

•ノーツアプリケーションで「よく利用する機能」かつ「比較的実装が簡単」なものをまとめました。

(例えば、LotusScript を使った高機能な処理は対象外です)

•機能によっては違う実装方法がある場合があります。また、本番で運用するにはエラー処理など追加のカスタマイズが必要な場合があります。

•資料作成に用いた環境は以下になります。• Domino サーバー 9.0.1 FP5

• Notes スタンダードクライアント 9.0.1 FP5

3

Page 4: ノーツアプリケーション開発 Hint & tips 101連発

アジェンダ

フィールド編

フォーム編

ページ編

ビュー編

カレンダービュー編

フレームセット編

デザイン編

共有可能な設計要素編

その他機能編

データベース編

エージェント編

4

Page 5: ノーツアプリケーション開発 Hint & tips 101連発

フィールド編

Page 6: ノーツアプリケーション開発 Hint & tips 101連発

デフォルト値(初期値)を設定する

• フィールド• デフォルト値

補足@Today 今日の日付のみ

@Now 現在の日時

@Now([ServerTime]) 現在のサーバーの日時

※クライアント PC 毎の日時のズレの影響が無くなる

@UserName 現在のユーザー名

123 or “XXX” 固定の数字や文字列

6

Page 7: ノーツアプリケーション開発 Hint & tips 101連発

必須入力にする(入力の確認)

• フィールド• 入力の確認

補足

@ThisValue 現在のフィールドの値

@ThisName 現在のフィールドの名前

@Failure 「入力の確認」の結果として、エラーメッセージを表示する場合

@Success 「入力の確認」の結果として、OK とする場合

7

Page 8: ノーツアプリケーション開発 Hint & tips 101連発

条件付き必須入力にする

• フィールド• 入力の確認

補足フィールド [category01] または [action01] が入力ありで現在のフィールド [time01] が未入力の時、エラーとする例

@ThisName、@ThisValue を使用することで同じ条件のフィールドで再利用できるプログラムとなる

8

Page 9: ノーツアプリケーション開発 Hint & tips 101連発

編集可能/不可を変更する(入力が有効)

• フィールド• 入力が有効

結果

True 編集可能

False 編集不可

※切り替えるためには、フォームの再計算を実行する必要がある

9

Page 10: ノーツアプリケーション開発 Hint & tips 101連発

入力値を変換する(入力の変換)

• フィールド• 入力の変換

補足

@Wide 半角アルファベットや半角カタカナを全角に変換する

@Narrow 全角アルファベットや全角カタカナを半角に変換する

10

Page 11: ノーツアプリケーション開発 Hint & tips 101連発

• フィールドの中にヘルプを表示する• ユーザーがフィールドにカーソルを移動すると消える

• プロパティ:フィールド• タブ:詳細

• フィールドヘルプ:[任意の文字列]

フィールドのヘルプを表示する(1) 11

Page 12: ノーツアプリケーション開発 Hint & tips 101連発

• フォームの下部にヘルプを表示する

• プロパティ:フィールド• タブ:詳細

• ヘルプの内容:[任意の文字列]

補足

フィールドヘルプは、メニュー<表示-表示-フィールドヘルプ>で表示/非表示が設定できるため、ユーザーが非表示にしている可能性があることに注意

フィールドのヘルプを表示する(2) 12

Page 13: ノーツアプリケーション開発 Hint & tips 101連発

複数の値を入力可能にする

• ダイアログリストやチェックボックスなどで複数の値を入力可能にする

• プロパティ:フィールド• タブ:フィールド情報

• 種類

• 複数値も可:有効

• タブ:詳細• 複数値オプション

• 値の分離記号

• 分離値の表示

13

例:値の分離記号:カンマ「移動,商談」と入力した場合、「移動」と「商談」の複数の値として認識

例:分離値の表示:セミコロン値が「移動」と「商談」の複数値の場合、「移動;商談」と表示

Page 14: ノーツアプリケーション開発 Hint & tips 101連発

幅、高さを固定する

• プロパティ:フィールド• タブ:フィールド情報

• スタイル:ネイティブ OS スタイル

• サイズ

• 幅

• 高さ

14

Page 15: ノーツアプリケーション開発 Hint & tips 101連発

読み込み/編集モード時に表示を切り替える

• 読み込み用と編集用のフィールドをそれぞれ用意し、モードにより表示/非表示を切り替える

• 読み込みモード用のフィールド• フィールドのプロパティ

• フィールド情報タブ

• 種類:表示用の計算結果

• 値:[フィールド名]

15

それぞれの行の段落非表示の設定を行う

段落非表示タブ

Page 16: ノーツアプリケーション開発 Hint & tips 101連発

• 段落単位に指定が可能

• プロパティ:文字• タブ:段落非表示

• 式により段落を非表示:[条件の式を記述]

補足

式の結果が True の時、その段落を非表示

False の時、表示となるので注意

ロール [admin] を持たないユーザーの場合、非表示

条件によって段落(文字, フィールド)の表示/非表示を切り替える 16

Page 17: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログリスト(キーワード)を表示する

• プロパティ:フィールド• タブ:フィールド情報

• 種類:ダイアログリスト

編集可能

• タブ:制御• 選択:[選択肢を設定]

• 選択肢を入力 :固定の文字列を設定

• 式で選択肢を設定 :式を使って選択肢を生成

• アドレス帳から選択 :ディレクトリ(サーバーまたはローカル)のユーザー/グループ一覧を表示

• ACL から選択 :ACL に登録されているユーザー/グループ/ロールを表示

• [ビュー] ダイアログから選択:ビューを表示。設定した列の値を取得

17

Page 18: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログリストにない値も入力可能とする

• プロパティ:フィールド• タブ:制御

• オプション

• リストにない値も可:有効

18

Page 19: ノーツアプリケーション開発 Hint & tips 101連発

日付ピッカーから日付を入力する

• フィールドのプロパティ• フィールド情報タブ

• 種類:日付/時刻、編集可能

• スタイル:日付/時刻制御

• 制御タブ• 日付の表示:有効

• 時刻の表示:無効

19

Page 20: ノーツアプリケーション開発 Hint & tips 101連発

タイムピッカーから時間を入力する

• プロパティ:フィールド• タブ:フィールド情報

• 種類:日付/時刻、編集可能

• スタイル:日付/時刻制御

• タブ:制御• 日付の表示:無効

• 時刻の表示:有効

20

「複数値も可」の場合2つの時刻間の入力となる

Page 21: ノーツアプリケーション開発 Hint & tips 101連発

日付/時刻の表示形式を変更する

• プロパティ:フィールド• タブ:制御

21

Page 22: ノーツアプリケーション開発 Hint & tips 101連発

フィールドの境界(「」かぎかっこ)を非表示にする

• プロパティ:フィールド• タブ:制御

• 表示:フィールドの境界を表示

22

補足日付/時刻の場合「境界線」で「なし」を設定

Page 23: ノーツアプリケーション開発 Hint & tips 101連発

文書を新規作成したユーザーに文書の作成者権限を与える

• プロパティ:フィールド• タブ:フィールド情報

• 種類:作成者、作成時の計算結果

(非表示ならば、編集可能でもよい)

• フィールド• 値/デフォルト値:@UserName

23

Page 24: ノーツアプリケーション開発 Hint & tips 101連発

特定のロール所有者に文書の作成者権限を与える

• フィールドのプロパティ• フィールド情報タブ

• 種類:作成者、作成時の計算結果

(非表示ならば、編集可能でもよい)

• フィールド• 値/デフォルト値: (例)”[owner]”

※ロール [owner] を持つユーザーに権限を与える場合

24

Page 25: ノーツアプリケーション開発 Hint & tips 101連発

複数のユーザーに文書の作成者権限を与える(1)

• 2つ以上のフィールドを作成する• 複数の作成者フィールドがある場合、すべてのフィールドが有効になる。

例:文書の作成者とロール [boss] を持つユーザーに権限を与える場合

25

Page 26: ノーツアプリケーション開発 Hint & tips 101連発

複数のユーザーに文書の作成者権限を与える(2)

• プロパティ:フィールド• タブ:フィールド情報

• 種類:作成者、作成時の計算結果

(非表示ならば、編集可能でもよい)

• 複数値も可:有効

• フィールド• 値/デフォルト値: (例)”[owner]”:”[admin]”

※ロール [owner] と [admin] を持つユーザーに権限を与える場合

※値をリスト(「:」コロンでつなぐ)で設定

26

Page 27: ノーツアプリケーション開発 Hint & tips 101連発

ユーザーの別名を取得

• 別名が使用可能な場合、@UserName のパラメータに「1」を指定することで別名を取得できる

例:@UserName(1)

CN=Taro Yamada/O=dev → CN=山田太郎/O=開発環境

27

Page 28: ノーツアプリケーション開発 Hint & tips 101連発

フォーム編

Page 29: ノーツアプリケーション開発 Hint & tips 101連発

メニューから新規文書を作成できるようにする

• プロパティ:フォーム• タブ:フォーム情報

• 表示

• メニューに含む:有効

※ [無効]の場合、非表示となる

29

Page 30: ノーツアプリケーション開発 Hint & tips 101連発

検索ビルダーに表示する

• プロパティ:フォーム• タブ:フォーム情報

• 表示

• 検索ビルダーに含む:有効

30

Page 31: ノーツアプリケーション開発 Hint & tips 101連発

新規文書を作成する時に選択している文書の値を引き継ぐ

• 文書を作成する時に選択文書のフィールド値を引き継いで作成することができる• 例:親文書の件名を引き継いで返答文書を作成する

• プロパティ:フォーム• タブ:デフォルト

• 作成するとき

• 式で選択文書からの値を引き継ぐ:有効

• フィールドの式で引き継ぎたいフィールド名を使用する

31

例:親文書のフィールド [report_docunid] の値を返答文書のフィールド [report_docunid] のデフォルト値として設定する

Page 32: ノーツアプリケーション開発 Hint & tips 101連発

新規文書を作成する時に選択している文書全体を引き継ぐ

• 文書を作成する時に選択文書全体をリッチテキストに引き継いで作成することができる• 例:メールの履歴付き返信と同種の機能

• プロパティ:フォーム• タブ:デフォルト

• 作成するとき

• 選択文書全体をリッチテキストフィールドに引き継ぐ:有効

• [引き継ぐ先のフィールド名]

• 形式:[文書リンク], [セクション (省略可能)], [リッチテキスト]

32

引き継ぐ元の文書

引き継ぐ先の文書リッチテキスト

Page 33: ノーツアプリケーション開発 Hint & tips 101連発

フォームの背景を変更する

• プロパティ:フォーム• タブ:フォームの背景

• 色:[任意]

• 図形またはリソース:[画像を指定」

33

例:社外秘の画像を表示

Page 34: ノーツアプリケーション開発 Hint & tips 101連発

文書の印刷/転送/クリップボードへのコピーを禁止する

• プロパティ:フォーム• タブ:セキュリティ

• 印刷/転送/クリップボードへのコピーを不可:有効

• 補足• 印刷

• 文書を開いている場合、メニューから印刷が非表示となる

• ビューから印刷を実行した場合、警告が表示される

• 転送• 警告が表示される

• クリップボードへのコピー• コピーできない

※画面キャプチャーは可能なため、あくまでも補助的な機能である

34

印刷時の警告 転送時の警告

Page 35: ノーツアプリケーション開発 Hint & tips 101連発

保存処理を制御する

• 予約フィールド [SaveOptions] に “0” を設定しておくと文書を保存ができないようにすることができる

※文章を閉じる操作を実行しても保存確認のダイアログが表示されずに閉じる

※本来は、メール用のオプション機能

• プロパティ:フィールド• タブ:フィールド情報

• 種類:テキスト

• フィールド• 値:”0”

※ ”1” を指定すると保存可能となる

• 参考文献• ヘルプ「メールオプションを制御する予約フィールド」

• SaveOptions の動作について(IBM)• http://www-01.ibm.com/support/docview.wss?uid=swg21465737

35

Page 36: ノーツアプリケーション開発 Hint & tips 101連発

デフォルトのフォームを設定する

• プロパティ:フォーム• タブ:フォーム情報

• オプション

• デフォルトのデータベースフォーム:有効

36

文書のフィールド [Form ] に保存されているフォーム名と一致するフォームがデータベースにない場合、警告が表示される

その後、• デフォルトフォームが設定されている場合デフォルトフォームで文書が開く(一致するフィールド名があれば、値も表示される)

• デフォルトフォームが設定されていない場合警告が表示されて文書が開かない

Page 37: ノーツアプリケーション開発 Hint & tips 101連発

編集できるフィールドをユーザーによって制限する(1)

• セクション(制限つきアクセス)を使用する• 設定されたユーザーのみ、セクション内の編集が可能になる

補足文書に対する権限までを制限するものではない

そのため、設定されていないユーザーでも文書に対する編集権限を持つ場合、フォームを使わない方法(エージェントなど)でフィールドを変更することは可能

• メニュー<作成-セクション-制限つきアクセス>

• プロパティ:フォームのセクション• タブ:式

• アクセス式

セクション内のフィールドの編集を許可するユーザー、ロール、グループ、またはそれらの値が設定されているフィールド名を設定

37

Page 38: ノーツアプリケーション開発 Hint & tips 101連発

編集できるフィールドをユーザーによって制限する(2)

• フィールド編「読み込み/編集モード時にフィールドの表示を切り替える」を応用して、ユーザーによってフィールドを表示/非表示を切り替える

• 例• ユーザー A の場合、編集可能フィールドを表示、表示用の計算結果フィールドを非表示

• ユーザー B の場合、表示用の計算結果フィールドを表示、編集可能フィールドを非表示

補足文書に対する権限までを制限するものではない

そのため、ユーザーでも文書に対する編集権限を持つ場合、フォームを使わない方法(エージェントなど)でフィールドを変更することは可能

38

Page 39: ノーツアプリケーション開発 Hint & tips 101連発

ページ

Page 40: ノーツアプリケーション開発 Hint & tips 101連発

計算結果の値を表示する

• メニュー<作成-計算結果テキスト>を挿入

• 計算結果• 値:「式を記述」

40

例:データベースのタイトルを表示する

例:フレームセットと組み合わせて使用する

Page 41: ノーツアプリケーション開発 Hint & tips 101連発

メニューを作成する

• アウトラインで作成したメニューをページに貼り付けて使用する

• アウトライン• 共有要素-アウトラインから作成

※ 「デフォルトアウトラインの作成」ボタンを使用した場合、現在のビュー/フォルダを元にメニューが自動生成される

• ページ• メニュー<作成-埋め込み設計要素-アウトライン>から作成したアウトラインを貼り付ける

41

Page 42: ノーツアプリケーション開発 Hint & tips 101連発

デザイン編

Page 43: ノーツアプリケーション開発 Hint & tips 101連発

水平線を表示する

• フォームやページで使用可能

• メニュー<作成-水平線>から貼り付ける

43

Page 44: ノーツアプリケーション開発 Hint & tips 101連発

セクションを作成する

• フォームやページで使用可能

• メニュー<作成-セクション-標準/制限つきアクセス>から貼り付ける

44

Page 45: ノーツアプリケーション開発 Hint & tips 101連発

タブを作成する

• メニュー<作成-表>• 表の種類:タブ

または、表を作成後に

• プロパティ:表• タブ:表の行

• 行の特殊表示:1行のみ表示

• 行の表示方法:タブボタンで行を選択

45

タブのラベルの設定:選択した行(タブラベルと表題)

Page 46: ノーツアプリケーション開発 Hint & tips 101連発

フレームのデザインをフラットにする

• プロパティ:フレーム• タブ:フレームの境界線

• 境界線のスタイル

• 3-D 境界線:無効(「すべてのフレームに適用」をクリック)

• 境界線のスタイル:(色、幅を設定)

46

Page 47: ノーツアプリケーション開発 Hint & tips 101連発

フレームセットに外枠を表示する

• 外枠を直接指定することができないため、以下の間接的な方法で表示する• 空のフレームを上下左右に作成する

• 上下のフレームに高さ 0 ピクセルを設定

• 左右のフレームに幅 0 ピクセルを設定

• 結果として上下左右のフレームが非表示になるが、フレーム間の幅・色を設定する機能は使用できるため、疑似的に外枠が表示される

47

高さ、幅を 0ピクセルに設定する前の状態

Page 48: ノーツアプリケーション開発 Hint & tips 101連発

ビューのデザインをフラットにする

• プロパティ:ビュー• タブ:スタイル

• ヘッダー

• スタイル: 「シンプル」または「フラット」

48

Page 49: ノーツアプリケーション開発 Hint & tips 101連発

ビューの行間、デザインを変更する

• プロパティ:ビュー• タブ:スタイル

• 主部

• 列

• 交互の列

• グリッド

• スタイル

• 色

• 行

• 間隔

49

Page 50: ノーツアプリケーション開発 Hint & tips 101連発

アクションバーのスタイルを変更する

• プロパティ:アクションバー• アクションバーサイズ

• アクションバー背景

• アクションバー境界

• ボタンのプロパティ

• ボタンのフォント

50

Page 51: ノーツアプリケーション開発 Hint & tips 101連発

ビュー編

Page 52: ノーツアプリケーション開発 Hint & tips 101連発

アイコンを表示する

• プロパティ:列• タブ:列情報

• 値をアイコン表示:有効

• 列• 列の値:@If( @Attachments > 0 ; 5 ; "" )

(例)添付ファイル数が 0 より大きい場合

5 番のクリップのアイコンを表示

52

指定可能なアイコンの一覧

※列と行の合計が番号

Page 53: ノーツアプリケーション開発 Hint & tips 101連発

カテゴリ別に表示する

• プロパティ:列• タブ:ソート

• ソート:「昇順」または「降順」

• 種類:カテゴリ別

53

Page 54: ノーツアプリケーション開発 Hint & tips 101連発

1つの列で複数階層(カテゴリ別)を表示する

• カテゴリ別の列の値に “¥¥”(円マーク続けて2個)がある場合、階層表示になる

54

例年、月、日で階層表示文字列でのソートになるため、月と日を2桁表示で処理している(2桁で処理しないと1~12月、1~31日の順番にならないので注意)

左図の「日付」列は、以下の値となっている“2016年¥¥08月¥¥06日”“2016年¥¥08月¥¥12日”

Page 55: ノーツアプリケーション開発 Hint & tips 101連発

ビューの名前を階層表示する

• ビューの名前に “¥”(円マーク1個)がある場合、フレームセットやナビゲータ未使用時のビュー名表示が階層表示になる

55

例“日付別¥Type2” の場合

Page 56: ノーツアプリケーション開発 Hint & tips 101連発

列の値の合計を表示する

• プロパティ:列• タブ:ソート

• 合計:合計

56

補足文書数を集計したい場合、列の値を「1」とし、「詳細を非表示にする」を有効にする

Page 57: ノーツアプリケーション開発 Hint & tips 101連発

列のヘッダーをクリックしてソート

• 列のヘッダーをクリックすることでソートが可能になる

• プロパティ:列• タブ:ソート

• 列のヘッダーをクリック時にソート:「昇順」「降順」「両方」

57

Page 58: ノーツアプリケーション開発 Hint & tips 101連発

未読文書マークを表示する

• プロパティ:ビュー• タブ:詳細

• 未読マーク:「未読文書のみ」または「標準(階層処理)」

• タブ:スタイル• 行

• 未読:「色」「太文字」「透明」

58

Page 59: ノーツアプリケーション開発 Hint & tips 101連発

システムアクションを追加する

• メニュー<作成-アクション-システムアクションの挿入>

または、

• 右クリックから「システムアクションの挿入」

59

Page 60: ノーツアプリケーション開発 Hint & tips 101連発

ビューのカスタマイズを許可する

• プロパティ:ビュー• タブ:オプション

• カスタマイズを許可:有効

60

各ユーザーが列の入れ替えを自由にできる

Page 61: ノーツアプリケーション開発 Hint & tips 101連発

選択用の余白を表示する

• プロパティ:ビュー• タブ:スタイル

• その他

• 選択用の余白を表示:有効

61

無効 有効

Page 62: ノーツアプリケーション開発 Hint & tips 101連発

最後の列をウィンドウ幅の最後まで広げる

• 利用環境にあわせて、最後の列の幅を広げることが可能

• プロパティ:ビュー• スタイルタブ

• その他

• 最後の列をウィンドウ幅の最後まで広げる:有効

62

無効

有効

Page 63: ノーツアプリケーション開発 Hint & tips 101連発

行の高さを変更する

• プロパティ:ビュー• タブ:スタイル

• 行:

• 高さ

• 行の高さを内容に合わせる

補足

「行の高さを内容に合わせる」を有効にすると

データの行数が設定値より小さい場合、

自動的にデータの行数に合わせて表示する

63

例:設定値は「6行」、データが「3行」、よって3行で表示

Page 64: ノーツアプリケーション開発 Hint & tips 101連発

列の値を複数行で表示する

• 列の値が複数値の場合、分離記号を「改行」に指定すると複数行で表示される

• 行の高さを2以上に設定する(「行の高さを変更する」参照)

• プロパティ:列• 複数値の分離記号:改行

64

Page 65: ノーツアプリケーション開発 Hint & tips 101連発

返答文書を表示する

• プロパティ:ビュー• タブ:オプション

• 返答文書を階層表示する:有効

• プロパティ:列(返答文書用)• タブ:列情報

• 返答文書のみ表示:有効

• 展開てきる行に三角アイコンを表示する:有効

• プロパティ:列(返答文書用の右列)• タブ:列情報

• 展開できる行に三角アイコンを表示する:有効

65

Page 66: ノーツアプリケーション開発 Hint & tips 101連発

行の色を動的に変更する

• 列の計算結果に応じて動的に行と文字の色(RGB)を指定する

• 色を指定するための列を先頭に作成する

• 列は非表示に設定する

66

例:日付が土日でフォーム [fmReport] の場合、背景色 224:241:255 、文字色 0:0:0 で表示する

Page 67: ノーツアプリケーション開発 Hint & tips 101連発

リッチテキストの値を表示する

• リッチテキストの値を直接ビューに表示することはできない

• 表示したい場合、リッチテキストとは別にビュー表示用のテキストを用意しておく必要がある

• ビューでは、テキストに変換しておいた方のフィールドを指定する

67

例文書を保存する時にリッチテキストの値をテキストに変換また、改行を半角空白に変換

Page 68: ノーツアプリケーション開発 Hint & tips 101連発

文書の貼り付けを禁止する

• ビュー• イベント:Querypaste(LotusScript)

• 変数「Continue」に「False」を設定

68

Page 69: ノーツアプリケーション開発 Hint & tips 101連発

未読文書のみ表示する

• 未読文書のみを表示する場合、@ViewShowThisUnread(“1”) を使用する

• 解除する場合、@ViewShowThisUnread(“0”) を使用する

69

通常 未読文書のみ

補足カテゴリ別表示ではなくなる点に注意

Page 70: ノーツアプリケーション開発 Hint & tips 101連発

カレンダービュー編

Page 71: ノーツアプリケーション開発 Hint & tips 101連発

カレンダー形式で表示する

• プロパティ:ビュー• タブ:ビュー情報

• スタイル:カレンダー

• プロパティ:列(1番目)• タブ:ソート

• ソート:昇順

※データは、日付/時刻型であること

71

Page 72: ノーツアプリケーション開発 Hint & tips 101連発

カレンダー形式のヘッダーのカスタマイズ

• プロパティ:ビュー• タブ:スタイル

• ヘッダー

• 背景

• スタイル

• 表示

• タブ:日付と時刻の形式• 利用できるカレンダー形式

72

Page 73: ノーツアプリケーション開発 Hint & tips 101連発

カレンダー形式の切り替える@コマンド

• @コマンド• CalendarFormat

• パラメータ:

• “1”:1 日間表示

• “2”:2 日間表示

• “5”:1 作業週間表示(月曜日から金曜日)

• “7”:1 週間表示

• “10”:2 作業週間表示(月曜日から金曜日) Release 8 以降

• “14”:2 週間表示

• “20”:1 作業月間表示(月曜日から金曜日) Release 8 以降

• “30”:1 ヵ月間表示

補足• パラメータは、数字ではなく、文字列を設定

• プロパティ:ビュー

• 日付と時刻の形式タブ

• 「利用できるカレンダー形式」で有効になっている形式であること

• @コマンド以外に、カレンダーのヘッダーのタブで切り替えることも可能

73

Page 74: ノーツアプリケーション開発 Hint & tips 101連発

日付ピッカーからカレンダービューを操作する

• ページ• メニュー<作成-埋め込み設計要素-日付ピッカー>から日付ピッカーを配置する

• フレームセット• 日付ピッカーを配置したページをフレームセットに設定する

• 日付ピッカーのフレームの「フレーム内のリンクのデフォルト対象」とカレンダービューを表示するフレームの「名前」を一致させる

※一致させなくても動作はするが、念のため一致させておいた方がよいと思われる

74

Page 75: ノーツアプリケーション開発 Hint & tips 101連発

共有可能な設計要素編

Page 76: ノーツアプリケーション開発 Hint & tips 101連発

サブフォーム

• 共有要素-サブフォームより作成

• メニュー<作成-リソース-サブフォームの挿入>からフォームに挿入• ヘッダーやフッター、複数のフォームで利用可能な共通部品としてまとめられる

• 特定のサブフォームを挿入する以外に、式の計算結果によって挿入するサブフォームを切り替えることも可能

76

Page 77: ノーツアプリケーション開発 Hint & tips 101連発

共有フィールド

• 共有要素-フィールドより作成

• メニュー<作成-リソース-共有フィールドの挿入>からフォームに挿入• 部署や氏名フィールドを複数のフォームで利用可能な共通部品として作成できる

77

Page 78: ノーツアプリケーション開発 Hint & tips 101連発

• 共有要素-列より作成

• メニュー<作成-共有列の挿入(追加)>からビューに挿入• ビューの列を複数のビューで利用可能な共通部品として作成できる

78

Page 79: ノーツアプリケーション開発 Hint & tips 101連発

共有アクション

• コード-共有アクションより作成

• メニュー<作成-共有アクションの挿入>からビューに挿入

• メニュー<作成-アクション-共有アクションの挿入>からフォームに挿入• アクションを複数のフォームやビューで利用可能な共通部品として作成できる

79

Page 80: ノーツアプリケーション開発 Hint & tips 101連発

スクリプトライブラリ

• コード-スクリプトライブラリより作成

• アクションやエージェントの LotusScript で使用する共通のライブラリを作成できる

• (Options) に使用するスクリプトライブラリを指定しておく必要がある

80

例)渡した値の足し算の結果を返すスクリプトライブラリ 例)呼び出し側

Page 81: ノーツアプリケーション開発 Hint & tips 101連発

その他の機能編

Page 82: ノーツアプリケーション開発 Hint & tips 101連発

作成日/作成者/更新日/更新者を作成する(簡易)

項目 種類(左) 種類(右) 計算式(例)

作成日 日付/時刻 作成時の計算結果 @Now または@Now([ServerTime]) ※サーバーの時刻を取得

作成者(例1) テキスト 作成時の計算結果 @DbLookup( "Notes":"NoCache" ; "names.nsf" ; "($Users)" ; @UserName ; “comment" )※ ドミノディレクトリのユーザー文書のコメントフィールドに漢字氏名が設定済みの想定

作成者(例2) 名前 作成時の計算結果 @UserName または@UserName(1) ※別名が使用できる場合

更新日 日付/時刻 計算結果 v := @Now([ServerTime]);@If( @IsDocBeingSaved ; v ; @ThisValue );

更新者(例1) テキスト 計算結果 v := @DbLookup( "Notes":"NoCache" ; "names.nsf" ; "($Users)" ; @UserName ; “comment" )

@If( @IsDocBeingSaved ; v ; @ThisValue );

更新者(例2) 名前 計算結果 V := @UserName(1);@If( @IsDocBeingSaved ; v ; @ThisValue );

82

補足

• サブフォームで作成しておくと複数のフォームで共用できるため便利である

• 上記方法は簡易な方法である。

• 作成日は、最初の保存日時ではなく、新規フォームを開いた日時である

• 更新日/更新者は、保存時の再計算時にフィールドの「入力の確認」や「型チェック」でエラーが発生しても表示が更新される(保存はされていないので問題なしとする考えもあるが、厳密に処理したい場合、LotusScirptを使って Querysaveイベントでエラーチェックおよび更新の必要がある)

• 更新日、更新者を作成日と作成者の式と同じにする方法もある。但し、保存なしの再計算時にも表示が更新される

Page 83: ノーツアプリケーション開発 Hint & tips 101連発

フォームにビューを埋め込む

• メニュー<作成-埋め込み設計要素-ビュー>からフォームにビューを埋め込むことが可能

83

Page 84: ノーツアプリケーション開発 Hint & tips 101連発

• 埋め込みビューで表示する文書を特定のカテゴリのみに指定することが可能

フィールド [report_docunid] の値と一致するカテゴリの文書のみを表示する

補足

Domino Designer の画面ではすべての文書が表示される

確認は Notes クライアントで行う必要がある

フォームにビューを埋め込む(表示するカテゴリを指定する) 84

Page 85: ノーツアプリケーション開発 Hint & tips 101連発

ビューを表示して値を取得する

1. フォームにボタン(またはアクションボタン)を配置する

2. @PickList を使用してビューを表示する

3. 選択された行の指定した列(左から何番目)の値が返される

4. [オプション] 返された値を使って別途@DbLookup を使用して検索/値を取得する

※複数の値を取得したい、目的の値がビューに表示されていない等々

85

例)

Page 86: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログボックスを表示する(@Prompt)確認系

• ユーザーに確認を表示するスタイルのダイアログボックス• YesNo

• YesNoCancel

• Ok

86

Page 87: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログボックスを表示する(@Prompt)選択系

• ユーザーに選択肢を表示するスタイルのダイアログボックス• OkCancelCombo

• OkCancelList

• OkCancelListMult

• 複数選択可

87

Page 88: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログボックスを表示する(@Prompt)入力系

• ユーザーに入力を求めるスタイルのダイアログボックス• OkCancelEdit

• OkCancelEditCombo

• 選択肢から選択することも可能

88

Page 89: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログボックスを表示する(@Prompt)特殊系

• 特殊なスタイルのダイアログボックス• Password

• 入力文字が「*」で表示

• LocalBrowse

• クライアント PC 内のファイル選択ダイアログが表示

• ChooseDatabse

• アプリケーション(データベース)の選択ダイアログが表示

89

Page 90: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログボックスの文字列を改行する(@Prompt)

• @Char(13) を使用する

90

Page 91: ノーツアプリケーション開発 Hint & tips 101連発

ダイアログボックスを表示する(@DialogBox)

• @DialogBox を使用すると、フォームをダイアログボックスとして利用可能になる

91

例レイアウト領域を使ったダイアログボックス用フォーム

ボタンのプログラム

Page 92: ノーツアプリケーション開発 Hint & tips 101連発

メールを送信する

• @MailSend を使用する構文:@MailSend( sendTo ; copyTo ; blindCopyTo ; subject ; remark ; bodyFields ; [ flags ] )

92

例:@MailSend( boss_username ; "" ; "" ; "日報の確認をお願いします" ; remark ; "" ; [IncludeDoclink] );

以下の条件• 宛先:フィールド「boss_username」のユーザー• 件名:"日報の確認をお願いします“• 本文:変数「remark」の内容• 文書リンク付き

Page 93: ノーツアプリケーション開発 Hint & tips 101連発

ローカル PC の notes.ini へデータを設定/取得する

• @Environment、@SetEnvironment を使用すると Notes クライアントを実行しているローカル PC のファイル(notes.ini)へデータを設定/取得することが可能• 式内で設定したい場合、@Environment を使用する

• @If や@Do など他の@関数内にネストする中で設定したい場合、@SetEnvironment を使用する

• 取得したい場合、@Environment を使用する

例:上司の漢字氏名を設定する

次回、文書を作成する時は前回の値がデフォルトで表示される• 設定方法:ボタンから式を実行

@Environment( "reportdb_boss_usernamejp" ; usernameJP );

• 取得方法:フィールドのデフォルト値に式を記述

@Environment("reportdb_boss_usernamejp")

補足

便利な機能ではあるが、ローカル PC に保存されるため保守性を考えて使う必要がある

スケジュールエージェント内で実行する場合、サーバーの notes.ini が対象になる

93

Page 94: ノーツアプリケーション開発 Hint & tips 101連発

ローカル PC の notes.ini の変数を削除する

• @Environment、@SetEnvironment を使用して Notes クライアントを実行しているローカルPC のファイル(notes.ini)へ設定した変数を削除するには、「""」空の文字列を設定する

例:

@Environment( "reportdb_boss_usernamejp" ; "" );

または、

@SetEnvironment( "reportdb_boss_usernamejp" ; "" );

94

Page 95: ノーツアプリケーション開発 Hint & tips 101連発

• 標準機能で作成する• アプリケーションについて

• リソース-ポリシー文書で作成

• @Command([HelpAboutDatabase]) で開く

• アプリケーションの使い方• リソース-使用法文書で作成

• @Command([HelpUsingDatabase])で開く

• フォームやページを使用して作成する

ヘルプを作成する 95

Page 96: ノーツアプリケーション開発 Hint & tips 101連発

環境設定機能を作成する

• 「選択肢」や「参照先データベースのパス&ファイル名」をプログラムの中で直接設定するのではなく、環境設定機能を設けて後から変更/設定できるようにしたい場合がある

• 主に2つの方法がある• 環境設定用フォームを用意し、文書を作成する(@コマンド [Compose])

その文書をビューからプログラムで取得する(例:@DbLookup)

• 環境設定用フォームを用意し、プロフィール文書として作成する(例:@コマンド [EditProfileDocument])

そのプロフィール文書をプログラムで取得する(例:@GetProfileField)

※プロフィール文書については別ページ参照

96

Page 97: ノーツアプリケーション開発 Hint & tips 101連発

プロフィール文書を作成/編集する(@コマンド)

• プロフィール文書を作成するには、以下の@コマンドを使用する• 構文:@Command( [EditProfileDocument] ; formname ; uniqueKey )

• Formname:フォームの名前

• uniqueKey:プロフィール文書を識別する一意のキー(例:ユーザー名)

補足• フォームとキーの組み合わせ1つにつき、1文書だけ作成が可能(複数は作成不可)

• 作成・編集するには、@コマンド [EditProfileDocument] から開く

主な特徴長所:比較的プログラムが短くて済む(@関数だと1行のコードで情報を取得できる)

非表示の文書のためビューは不要

短所:キャッシュされるため、頻繁に変更される情報の参照/保存には利用できない

(例:文書の通し番号)詳細は、ヘルプ参照:@GetProfileField (式言語)

97

Page 98: ノーツアプリケーション開発 Hint & tips 101連発

プロフィール文書のフィールド値を取得/設定する

• フィールド値を取得• @GetProfileField( profilename ; fieldname ; uniqueKey )

• フィールド値を設定• @SetProfileField( profilename ; fieldname ; value ; uniqueKey )

98

プロフィール文書で使用しているフォーム

フィールド値を取得して、他アプリケーション(DB)から値を取得

Page 99: ノーツアプリケーション開発 Hint & tips 101連発

フォームを変更する

• 作成した時のフォームと違うフォームに変更したい場合

• プロパティ:フィールド• タブ:フィールド情報

• 名前:Form

• 種類:テキスト

• フィールド• 値/デフォルト値: (例)”fmNotice”

※変更先のフォーム名を設定

99

Page 100: ノーツアプリケーション開発 Hint & tips 101連発

一時的に違うフォームで開く

• 作成した時のフォームと違うフォームで一時的に開きたい場合

• ビュー• フォームの式:[開きたいフォーム名]

補足

設定したビューから開く場合のみ、指定したフォームで開く

100

Page 101: ノーツアプリケーション開発 Hint & tips 101連発

アクションメニューにセパレーターを表示する 101

• プロパティ:アクション• タブ:アクション情報

• 種類:メニューセパレータ

Page 102: ノーツアプリケーション開発 Hint & tips 101連発

アクションボタンからリンクメッセージを作成する

• メニュー<作成-メール-特殊-リンクメッセージ>と同じ働きをするアクションボタンを作成する場合、以下の式を使用する

@Command( [Compose] ; @MailDbName ; "Bookmark" )

• 現在開いている文書へのリンクが付いたメールが簡単に作成できる

102

応用:「伝言メモ」を作成する場合、以下の式を使用する@Command( [Compose] ; @MailDbName ; "Phone Message" )

Page 103: ノーツアプリケーション開発 Hint & tips 101連発

データベース編

Page 104: ノーツアプリケーション開発 Hint & tips 101連発

DB のアイコンを設定する

• リソース-アイコンから設定する

104

Page 105: ノーツアプリケーション開発 Hint & tips 101連発

起動時に開く設計要素を設定する

• プロパティ:データベース• タブ:起動

105

フレームセット以外も設定可能

Page 106: ノーツアプリケーション開発 Hint & tips 101連発

テンプレートとして作成する

• ファイルの拡張子を「.ntf」とする

• プロパティ:データベース• タブ:設計

• 継承

• マスターテンプレートのデータベース:有効

• テンプレート名:[任意の名前]

106

Page 107: ノーツアプリケーション開発 Hint & tips 101連発

テンプレートから設計を引き継ぐように設定する

• プロパティ:データベース• タブ:設計

• 継承

• テンプレートから設計を引き継ぐ:有効

• テンプレート名:[テンプレートの名前]

• design タスクや再設計の実行時にテンプレートの設計に置き換わる

107

例)テンプレート側の設定

Page 108: ノーツアプリケーション開発 Hint & tips 101連発

文書のロックを許可する

• 文書を編集モードで開いている時、他のユーザーが同じ文書を編集モードにすることを抑止する機能(競合の低減)。但し、癖が強い機能なので使用には注意が必要

• プロパティ:データベース• タブ:データベースの基本

• 文書のロックを許可:有効

• 参考文献• Lotus Notes/Domino 文書ロックの仕組みFAQ

• http://www.ibm.com/developerworks/jp/lotus/ldd_tech/20030328.html

• 文書ロックとソフトロックの違いについて• https://www-01.ibm.com/support/docview.wss?uid=swg21464483

108

ロック時のメッセージ

Page 109: ノーツアプリケーション開発 Hint & tips 101連発

未読マークを使用しないようにする

• 未読マークを使用しないデータベースでは、オフにすることが可能• 例:マスターなど

• プロパティ:データベース• タブ:詳細

• 未読マークオプション

• 未読マークを使用しない:有効

109

Page 110: ノーツアプリケーション開発 Hint & tips 101連発

ビューの書き出しを非表示にする

• プロパティ:データベース• タブ:詳細

• 詳細オプション

• ビューのデータの書き出しを無効にする:有効

110

ビューのコンテキストメニュー(右クリック)

メニューバー

ビューのデータの書き出しを無効にする

有効 無効

Page 111: ノーツアプリケーション開発 Hint & tips 101連発

特定条件での削除を禁止する

• コード-データベースクリプト• Querydocumentdelete

• 変数「Continue」に「False」を設定して処理を終了すると削除がキャンセルとなる

• 補足

• ACLで削除権限があっても「手動」での削除ができない

• 但し、エージェントなどプログラムからの削除は、権限があれば可能なので注意が必要である

111

例:上司が確認済みの日報を削除禁止とする

Page 112: ノーツアプリケーション開発 Hint & tips 101連発

エージェント編

Page 113: ノーツアプリケーション開発 Hint & tips 101連発

処理対象文書の検索条件(シンプルアクション、式)

• 以下の2つの条件を満たす文書が処理対象となる

• プロパティ:エージェント• タブ:基本

• 実行

• 対象:「作成または変更されたすべての文書」※1

または「データベースのすべての文書」

※1:前回のエージェント実行時から作成または変更された文書が対象

(エージェントがまだ処理を実行していない文書が対象)

但し、エージェントの初回実行時と更新(保存)時は、すべての文書が対象となるので注意

• エージェント• Document Selection:「検索条件の追加…」から設定

113

Page 114: ノーツアプリケーション開発 Hint & tips 101連発

処理を記述する(シンプルアクション、式)

• エージェント:シンプルアクションの場合• アクション:「アクションの追加…」から設定

• エージェント:シンプルアクションの場合• アクション:(式を記述)

114

Page 115: ノーツアプリケーション開発 Hint & tips 101連発

スケジュールを設定する

• プロパティ:エージェント• タブ:基本

• 実行

• トリガー:スケジュール

• 「一日一回以上」「毎日」「毎週」「毎月」「なし」から選択

• 「スケジュール…」ボタンから詳細な設定を行う

115

Page 116: ノーツアプリケーション開発 Hint & tips 101連発

最後までご覧頂き、ありがとうございました。