レッスン 1: データベースのタイトルを印刷する

レッスン 1 では、アクションをクリックすればデータベース名をダイアログボックスに表示するスクリプトを作成します。「Learning LotusScript®」というサンプルのディスカッションデータベースを作成しておいてください。

手順 A: アクションを作成する

このレッスンでは、ユーザーがアクションをクリックすると実行するスクリプトを作成します。

  1. Learning LotusScript データベースが設計ペインに表示されていない場合は、それを開きます。

    Work pane displaying a design list with the Main Topic form highlighted

  2. 設計ペインの [フォーム] をクリックします。右側のワークペインから [メイントピック] を開きます。フォームがワークペインの最上部に表示されます。プログラムペインが表示されます。
  3. [作成] - [アクション] を選択します。[アクションのプロパティ] インフォボックスが表示されます。
  4. [アクション] インフォボックスで、アクションに「Display title」という名前をつけます。インフォボックスを閉じます。

    Action Properties box

  5. プログラムペインの [実行] メニューから [LotusScript] を選択します。
  6. [オブジェクト] タブのプログラム可能なイベントの一覧から [Click] を (選択されていなければ) 選択します。

手順 B: [リファレンス] タブにアクセスする

インフォリストがプログラムペインに表示されます。リストには 2 つのタブ [オブジェクト] と [リファレンス] があります。[リファレンス] タブが表示されない場合は、プログラムペインを区切るバーをドラッグします。[オブジェクト] タブにはプログラムに使用するイベントやオブジェクトが表示されます。[リファレンス] タブには、Notes クラス、プロパティ、メソッド、LotusScript 言語の使用に関する情報が入っています。この手順では、次のことを学習します。

次の手順では何も作成しません。Domino クラスに精通することを目的とします。

  1. プログラムペインで [リファレンス] タブを選択します。
  2. インフォリストのサイズを大きくするには、ペインの端をドラッグします。
  3. ドロップダウンメニューから [Domino: Classes] を選択します。[リファレンス] タブには使用可能なクラスが表示されます。
  4. スクロールバーを使用して使用可能なクラスを調べます。クラス名の多くは Domino で実際に使用する用語と同じになっています。
  5. [NotesDatabase] クラスの三角アイコンをクリックしてを展開します。
  6. [NotesDatabase] クラスの下に表示される [Properties] を展開します。

    Reference tab displaying the properties of the NotesDatabase class

  7. [NotesDatabase] クラスの下に表示される [Methods] を展開します。
  8. ドロップダウンリストから [LotusScript Language] を選択します。
  9. [All] を展開します。[リファレンス] タブには LotusScript 言語の各部が表示されます。
  10. LotusScript のヘルプのリストをスクロールしてください。[Dim] と [Messagebox] を探します。

手順 C: スクリプトを入力する

これまでの手順でスクリプトを入力する準備が整いました。プログラムペインで、次の例のとおりにサブルーチンを編集します。大文字と小文字を区別する必要はありませんが、プログラムペインでは LotusScript キーワードの最初の文字を大文字にする必要があります。クラス、プロパティ、メソッドの名前を大文字にする必要はありません。連続する引用符 (行 3 に 2 つの引用符が 1 組、行 4 に 4 つの引用符が 2 組) の間に空白は入れません。

Sub Click(Source As Button)
    Dim db As NotesDatabase
    Set db = New NotesDatabase( "", "Learning LotusScript.nsf" )
    Messagebox """" + db.Title + """",, "Title of database"
End Sub

これが、プログラムペインに表示されるコードです。

Programmer's pane displaying the LotusScript code for an Action button

手順 D: スクリプトのコンパイルとテストを行う

コンパイルとはスクリプトを実行可能コードに変換するプロセスです。アクションのスクリプトを保存するか、スクリプトを作成した設計要素を閉じて保存すると、スクリプトがコンパイルされます。

  1. [ファイル] - [保存] を選択します。
  2. 「スクリプトエラーによりデータを保存しませんでした。」というメッセージが表示された場合は、プログラムペインの最下部に表示されるエラーを確認します。入力した内容をダブルチェックして、手順 C のスクリプトと同じかどうかを確認します。
  3. [設計] - [Notes でのプリビュー] を選択します。または Notes クライアントから作成したデータベースを開き、[メイントピック] フォームを使用して文書を作成するか、既存の文書を開きます。
  4. アクションバーの [Display title] アクションをクリックします。Notes のダイアログボックスに「Title of database」と「Learning LotusScript」が表示されます。 成功。

    よくあるエラーはデータベースのファイル名を正しく指定しない場合です。この場合「db」は空の NotesDatabase オブジェクトを示します。Title プロパティが空の文字列を表示した場合は、スクリプトのデータベースファイル名が正しいかどうか、およびサーバー名が 2 つの連続した引用符 (空白なし) であることを確認してください。修正したら再コンパイルして、再度テストし直してください。

  5. 終了したら、Domino Designer に戻り、[メイントピック] フォームを閉じます。

手順 E: スクリプトを編集する

スクリプトを保存した後で編集する必要はありませんが、必要となった場合のために手順を示します。

  1. Learning LotusScript データベースが設計ペインに表示されていない場合は、それを開きます。
  2. 設計ペインの [フォーム] をクリックします。右側のワークペインから [メイントピック] を開きます。
  3. アクションの一覧が表示されない場合は境界線を調整して表示します。
  4. [Display title] アクションを選択します。

レビュー: スクリプトの動作

入力したスクリプトの意味は次のように表現できます。ローカルコンピュータに保存されている Learning LotusScript.nsf データベースにアクセスします。このデータベースを参照するには「db」という名前を使用します。 データベース名を表示します。

行 1: サブルーチンを開始する

Sub Click (Source As Button) はサブルーチンの始点を定義します。この行は自動的に作成されます。

行 2: オブジェクト変数を宣言する

Dim db As NotesDatabase は変数「db」を宣言します。この変数は NotesDatabase クラスのインスタンスです。変数がクラスのインスタンスとして宣言されると、その変数はオブジェクトと呼ばれます。変数名「db」は独自に変更できます。

行 3: オブジェクトの値を設定する

Set db = New NotesDatabase( "", "Learning LotusScript.nsf") は、ローカルに保存されている Learning LotusScript.nsf データベースを参照するオブジェクト「db」の値を設定します。

行 4: オブジェクトのプロパティをダイアログボックスに表示する

「Messagebox """" + db.Title + """",,"Title of database"」は、データベース名を取得し、ダイアログボックスに表示します。

行 5: サブルーチンを終了する

End Sub はサブルーチンの終点を定義します。この行でスクリプトが終了します。この行は自動的に作成されます。

Web で実行する

LotusScript はブラウザでは実行できません。[メイントピック] フォームをブラウザでプリビューすると、[Display title] アクションが表示されません。これはアクションが LotusScript の中にあり、Domino によってブラウザに送信できないからです。

LotusScript をブラウザから実行する唯一の方法は、Domino エージェントを作成して RunAgent または ToolsRunMacro @コマンドまたは OpenAgent URL コマンドをブラウザから実行します。注意したいのは、エージェントはエージェントの保存されている Domino サーバー上で実行されるのであり、ブラウザで実行されるのではないという点です。

エージェントを作成する

エージェントは、フォームから独立して、設計要素の別のカテゴリを構成しています。

  1. 設計ペインで [エージェント] を選択し [新規エージェント] をクリックします。[エージェント] インフォボックスが表示されます。プログラムペインが隣に表示されます。
  2. エージェントに「Display title」と名前を付けます。
  3. [共有] オプションを選択します。
  4. [実行] セクションで [イベント] トリガーをクリックし、ドロップダウンボックスから [エージェントリストから手動で] を選択します。
  5. ターゲットには [なし] を選択します。
  6. プログラムペインの [実行] メニューから [LotusScript] を選択します。
  7. [オブジェクト] タブのプログラム可能なイベントから [Initialize] を選択します。

スクリプトを入力する

次のようにサブルーチンを編集します。

Sub Initialize
    Dim db As NotesDatabase
    Set db = New NotesDatabase( "", "Learning LotusScript.nsf" )
    Print "<B>Title of database<HR>""" + db.Title + """</B>"
End Sub

エージェントでは、実行コードに Sub Initialize を使用してください。Dim と Set で始まる行は、Notes クライアントで実行するために入力したアクションの行と同じです。Print で始まる行は異なります。

ブラウザから LotusScript エージェントを実行すると、Print ステートメントが、ブラウザの新しいページに書き込みをします。このスクリプトの Print ステートメントは次のようになっています。

エージェントのプロパティを調整する

Web エージェント用にプロパティを調整する必要があります。

  1. エージェントを保存して閉じます。エージェントの名前は「(Display title)」であることに注意してください。カッコで囲まれているのはエージェントがユーザーに非表示であることを示します。これは [エージェントリストから手動で] を選択したためです。
  2. エージェントが選択されていることを確認して [エージェント] - [エージェントのプロパティ] を選択します。[エージェント] インフォボックスが表示されます。
  3. [設計] タブをクリックします。
  4. [Web ユーザーで実行] をクリックします。ユーザー認証とセキュリティのために、通常ブラウザのログイン名でエージェントを実行します。これは Anonymous か Domino ディレクトリ内のユーザー名になります。それ以外はエージェントの作成者名で実行されます。
  5. [エージェント] インフォボックスを閉じます。

アクションを作成する

フォームアクションを作成します。

  1. [メイントピック] フォームを開きます。
  2. [作成] - [アクション] を選択します。
  3. [アクション] インフォボックスで、アクションに「Display title」という名前をつけます。(同じ名前のアクションを複数作成できます。)
  4. [非表示] タブで [Notes R4.6 以降] を選択します。Notes クライアントでは表示されないようにします。インフォボックスを閉じるか移動させます。
  5. プログラムペインの [実行] メニューから [式] を選択します。
  6. プログラムペインに次の式を入力します。エージェントの名前はカッコも含めて正確に入力してください。
    @Command([Runagent]; "(Display title)")

インターネットで確認する

ローカルのデータベースは、ホスト名に「localhost」を指定することでブラウザで確認できます。プロキシサーバーを使用している場合は、「localhost」をプロキシサーバーを通さないホストの一覧に設定してください。

  1. [ファイル] - [保存] を選択します。
  2. プログラムペインの最下部にエラーが表示された場合は、入力した内容をダブルチェックして、式が正しいかを確認します。
  3. [ファイル] - [データベース] - [アクセス制御] を選択します。[ユーザー] のリストから [Anonymous] のサーバーとグループを選択します。[アクセス] を [作成者] にし、[文書の作成] を選択します。[OK] をクリックします。
  4. [設計] - [Web ブラウザでのプリビュー] を選択し、使用するブラウザ名を選択します。代わりにブラウザを起動し、次のように OpenForm URL コマンドを入力することもできます。
     http://localhost/Learning+LotusScript.nsf/MainTopic?OpenForm

    テストデータベースにアクセスするには、[設計] - [Web ブラウザでのプリビュー] を再度選択するか、URL コマンドの後に [設計] - [Web ブラウザでのプリビュー] を選択しないと表示できないことがあります。

  5. アクションバーの [Display title] アクションをクリックします。「Title of database」と「Learning LotusScript」が書かれた新しいページがブラウザに表示されます。成功。

課題: データベースのファイル名を表示する

学習した内容をもとに Learning LotusScript データベースのファイル名をダイアログボックスに表示するスクリプトを作成します。

  1. Learning LotusScript データベースで [メイントピック] フォームを開きます。
  2. アクションを作成して名前を付けます。
  3. プログラムペインで、[実行] メニューから [LotusScript] を選択します。
  4. [リファレンス] タブで [Domino: Classes] を選択します。
  5. データベースのファイル名を取得するプロパティを NotesDatabase クラスで探します。
  6. 学習した内容をもとにスクリプトを作成します。

解決方法: データベースのファイル名を表示する

NotesDatabase クラスの FileName プロパティを使用すると必要な情報を入手できます。これにアクセスするには、Title プロパティにアクセスする方法と同じく、オブジェクト名に続けて、ドット、プロパティ名の順に入力します。 スクリプトの完成例を次に示します。

Sub Click(Source As Button)
    Dim db As NotesDatabase
    Set db = New NotesDatabase( "", "Learning LotusScript.nsf" )
    Messagebox db.Filename,, "File name of database"
End Sub