Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

LotusScript でエージェント情報を出力してみた

LotusScript でエージェント情報を出力してみた

このスライドは 2025年12月11日開催の「第81回 のの会」で使用したものです。

LotusScript では、エージェントの情報は NotesAgent クラスを使用することでそのプロパティからも取得できますが、なぜかスケジュールに関する情報を取得できるプロパティが存在しません。
この資料ではエージェントに関連するスケジュール等の情報を取得するためのヒントとなるコードのサンプルがあります。

Avatar for Haruyuki Nakano

Haruyuki Nakano

December 12, 2025
Tweet

More Decks by Haruyuki Nakano

Other Decks in Education

Transcript

  1. LotusScript の NotesAgent クラスの プロパティ。実行場所は? • Comment • CommonOwner •

    HasRunSinceModified • HttpURL • IsActivatable • IsEnabled • IsNotesAgent • IsPublic • IsWebAgent • LastRun • LockHolders • Name • NotesURL • OnBehalfOf • Owner • ParameterDocID • Parent • ProhibitDesignUpdate • Query • ServerName • Target • Trigger
  2. LotusScript の NotesAgent クラスの プロパティ。実行場所は? • Comment • CommonOwner •

    HasRunSinceModified • HttpURL • IsActivatable • IsEnabled • IsNotesAgent • IsPublic • IsWebAgent • LastRun • LockHolders • Name • NotesURL • OnBehalfOf • Owner • ParameterDocID • Parent • ProhibitDesignUpdate • Query • ServerName • Target • Trigger
  3. 「設計要素のプロパティ」? 「現在の実行プロパティではない」? 簡単な検証では、Designerで見える「実行場所」が出力された • 「エージェントが有効になったときサーバー名を指定」にチェックを付けた無効のエージェ ントがあるテンプレートを使用して、サーバー上にアプリケーションを新規に作成 ① クライアントでエージェントの NotesAgent.ServerName を出力

    ② コンソールから「tell amgr run」で実行したエージェントから NotesAgent.ServerName を出力 • Designerでエージェントを有効化し、サーバー名を指定 ③クライアントでエージェントの NotesAgent.ServerName を出力 • 管理クライアントでアプリケーションをサーバーIDで署名 ④クライアントでエージェントの NotesAgent.ServerName を出力 クラス.プロパティ ①無効 ②無効 ③有効 ④有効 NotesAgrent.ServerName ヌル”” ヌル”” サーバー名 サーバー名 ①③④ ②
  4. LotusScript の NotesAgent クラスの プロパティ。スケジュールは? • Comment • CommonOwner •

    HasRunSinceModified • HttpURL • IsActivatable • IsEnabled • IsNotesAgent • IsPublic • IsWebAgent • LastRun • LockHolders • Name • NotesURL • OnBehalfOf • Owner • ParameterDocID • Parent • ProhibitDesignUpdate • Query • ServerName • Target • Trigger スケジュールを示す プロパティが 無い!?
  5. スケジュールのタイプ 実行間隔/実行日 スケジュール type dateinmonth dayofweek hours minutes 1日1回以上 byminutes

    0 – 23 0 - 55 日次 daily 週次 weekly sunday - saturday 月次 monthly 1 - 31 スケジュールのタイプと実行間隔/実行日は、「agent – trigger – schedule」の属性
  6. 有効時間帯 有効時間帯は、 開始時刻が「agent – trigger – schedule – starttime -

    datetime」のテキスト 終了時刻が「agent – trigger – schedule – endtime - datetime」のテキスト “有効時間帯”ではなく”終日”を選択 した場合、この枠内が無い
  7. 実行日制限 実行日制限の 実行開始日が「agent – trigger – schedule – startdate -

    datetime」のテキスト 実行終了日が「agent – trigger – schedule – enddate - datetime」のテキスト 「週末はエージェントを実行しない」が「agent – trigger – schedule」の属性 “週末はエージェントを実行しな い”にチェックを付けない場合、 onweekends 属性が無い
  8. ビューの設計 列 列のタイトル 式 列の設定など 1 有効/無効 @If(@IsAvailable(AGENT_ACTIVATABLE); @If(AGENT_ENABLED="true"; 202;

    203); 0) 値をアイコン表示 2 エージェント名 AGENT_NAME 3 トリガー ※後述 4 対象の文書 ※後述 5 スケジュール ※後述 6 実行制限 ※後述 複数値の分離記号:改行 7 実行場所 @If(SCHEDULE_RUNLOCATION="any"; "すべての サーバー"; @Name([Abbreviate]; SCHEDULE_RUNSERVER)) 実行場所に”ローカル” を指定するとユーザー 名が表示される
  9. 列「トリガー」の式 t := TRIGGER_TYPE; s := SCHEDULE_TYPE; @If( t="agentlist"; "イベント

    - エージェントリストの選択"; t="actionsmenu"; "イベント - アクションメニューの選択"; t="beforenewmail"; "イベント - 新規メールの受信前"; t="afternewmail"; "イベント - 新規メールの受信後"; t="docupdate"; "イベント - 文書の作成後または変更後"; t="docpaste"; "イベント - 文書が貼り付けられたとき"; t="serverstart"; "イベント - サーバーの開始時"; t="scheduled"; "スケジュール - " + @If( s="byminutes"; "1日1回以上"; s="daily"; "日次"; s="weekly"; "週次"; s="monthly"; "月次"; s="never"; "なし"; "“ ); "" )
  10. 列「対象の文書」の式 t := DOCUMENTSET_TYPE; @If( t="all"; "データベースのすべての文書"; t="modified"; "作成または変更されたすべての文書"; t="unreadinview";

    "ビューのすべての未読文書"; t="allinview"; "ビューのすべての文書"; t="selected"; "すべての選択文書"; t="runonce"; "なし"; "" )
  11. 列「スケジュール」の式 s := SCHEDULE_TYPE; @If( s="byminutes"; "1日1回以上: " + SCHEDULE_HOURS

    + " 時間 " + SCHEDULE_MINUTES + "分毎"; s="daily"; "日次: 毎日 " + @Middle(SCHEDULE_STARTTIME; 1; 2) + " 時 " + @Middle(SCHEDULE_STARTTIME; 3; 2) + " 分"; s="weekly"; "週次: 毎週 " + @ReplaceSubstring(SCHEDULE_DAYOFWEEK; "monday":"tuesday":"wednesday":"thursday":"friday":"saturday":"sunday"; "月":"火":"水":"木":"金":"土":"日" ) + "曜日 " + @Middle(SCHEDULE_STARTTIME; 1; 2) + " 時 " + @Middle(SCHEDULE_STARTTIME; 3; 2) + " 分"; s="monthly"; "月次: 毎月 " + SCHEDULE_DATEINMONTH + " 日 " + @Middle(SCHEDULE_STARTTIME; 1; 2) + " 時 " + @Middle(SCHEDULE_STARTTIME; 3; 2) + " 分"; s="never"; "なし"; "" )
  12. 列「実行制限」の式 sd := SCHEDULE_STARTDATE; ed := SCHEDULE_ENDDATE; @Trim( @If( @IsAvailable(SCHEDULE_STARTDATE);

    "実行開始日: " + @Left(sd; 4) + "/" + @Middle(sd; 4; 2) + "/" + @Right(sd; 2); "" ): @If( @IsAvailable(SCHEDULE_ENDDATE); "実行終了日: " + @Left(ed; 4) + "/" + @Middle(ed; 4; 2) + "/" + @Right(ed; 2); "" ): @If( SCHEDULE_ONWEEKENDS="false"; "週末はエージェントを実行しない"; "" ) )