当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2008年10月31日金曜日

他のエージェントを実行する

ノーツDBにあるエージェントを呼び出して実行するという方法。
NotesAgentクラスのRunメソッドを使う。これは、実行された場所でエージェントを実行する。
ノーツDBのボタンなどに記述した場合、このエージェントはクライアント側で実行される。

同じようなものでRunOnServerメソッドがある。こちらは、サーバ上でエージェントを実行するものである。
場合によってうまく使い分けてほしい。

サンプルは、ボタンに記述してあるもので、単純に指定したエージェントを実行するだけのものである。

----------------------------------------------------------------------
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent

Set db = session.CurrentDatabase
Set agent = db.GetAgent( "(NotesAgentクラス\他のエージェントを呼び出す)" )

'エージェントを実行する
Call agent.Run
End Sub



Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月30日木曜日

メールアドレスの抽出その2

メールアドレスの抽出で書いた記事だが、もっと簡単な方法があったので、掲載しておく。

@Name関数のオプションにある[Address821]を使えば良かったのだ。
これを使うと、メールアドレスから、RFC821形式でアドレスを返してくれるのだ。
しかも、アドレスの所は、複数値であっても有効なのである。

サンプルは、SendToフィールドの値からRFC821形式のアドレスを取得するものである。
CopyToやBlindCopyToからも取得したいなら、SendTo:CopyTo:BlindCopyToとリスト形式にすれば良いだけである。

------------------------------------------------------------------------
tmp := @Name([Address821];SendTo);
@Prompt([Ok];"メールアドレスの抽出";@Implode(tmp))


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月29日水曜日

「ファイルを開く」ダイアログを表示する

ファイルを開くダイアログを表示するという方法を紹介しよう。
@関数で言えば、@Prompt([LocalBrowse]~)に相当するのだが、LotusScriptの方がもう少し便利に使える。
ダイアログに表示するファイルの種類を、好きに指定できるのだ。

今回はサンプルを2つ用意した。
1つは、テキストファイル(拡張子がtxtとcsvのもの)を選択するもので、
もう1つは、ノーツDB(拡張子がnsfとntfのもの)を選択するものだ。

昨日の記事と照らし合わせてみてもらえると面白いだろう。

--------------------------------------------------------------
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim ret As Variant

ret = uiws.OpenFileDialog( False, "ファイルを開く", "テキストファイル|*.txt|CSVファイル|*.csv" )
End Sub


--------------------------------------------------------------
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim ret As Variant

ret = uiws.OpenFileDialog( False, "データベースを開く", "Notes Databases|*.nsf|Notes Templates|*.ntf" )
End Sub



Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月28日火曜日

「データベースを開く」ダイアログを表示する

以前に、データベースの選択という記事で、「データベースを開く」ダイアログを表示するというサンプルを示したが、今回はそのLotusScript版である。
効果は同じなので、場面に応じて使い分けてほしい。

ここで気をつけてほしいのが、「PROMPT_CHOOSEDATABAS」という定数。
ヘルプによると、Release 6.0では実装されていないと書いてあるが、筆者の8.0.2の環境でも実装されていないようだ。
なので、PROMPT_CHOOSEDATABASと書いてもコーディングエラーになる。
そこでサンプルでも、13という値を直接書いている。後で分からなくならないように、コメントを記述しておくことをお勧めする。

また、Promptメソッドの2番目以降(4番目と5番目は任意)は、何を書いても無視されるので、""にしておくこと。

-----------------------------------------------------------------------
Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim ret As Variant

'PROMPT_CHOOSEDATABASEは、リテラル値で13
ret = uiws.Prompt( 13, "", "" )
If Isempty( ret ) Then
Msgbox "データベースは選択されていません。", 0, "データベースの選択"
Exit Sub
End If
Msgbox ret(0), 0, "サーバ名"
Msgbox ret(1), 0, "データベースファイル名"
Msgbox ret(2), 0, "データベースタイトル"
End Sub



Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月24日金曜日

増えたビューアイコン




昔からノーツに携わっている人からしたら、「ずいぶん増えたなぁ」と思えるような画面です。
50個近くアイコンが増えましたね。
それにしても、同じようなアイコンがあるなぁ。なんで使い回ししないんだろ?

ちなみに、ビューのポップアップヘルプを有効にしておくと(ユーザプリファレンスで設定可能)、
アイコンの名前が表示される。
一応、全部違っているようなので、これで「違うアイコンです!」って言い切るつもりなんだろう・・・
プログラマの方は、このメッセージも確認してからビューアイコンを使うようにしてほしい。

Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

フィールドの内容をクリップボードにコピー

Notes/Domino8環境へのバージョンアップに手間取ったので、今日も手抜き。

フィールドの内容をクリップボードにコピーするサンプル。
まぁ、クリップボードを使うから、UIでの利用だな。と覚えておけばよいでしょう。
ということで、NotesUIDocumentクラスのメソッドなのです。

------------------------------------------------------------------------------------------
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument

Set uidoc = workspace.CurrentDocument

Call uidoc.GoToField( "Subject" )
Call uidoc.SelectAll
Call uidoc.Copy
End Sub


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月23日木曜日

環境のバージョンアップ

筆者の環境は、Lotus Notes/Dominoともに7.0.3であった。そこに、Sametimeをインストールして使っていた。
関わっていたプロジェクトも一段落したので、そろそろ環境をバージョンアップすることにした。

ということで・・・
Lotus Notes/Dominoをともに、8.0.2にしてみた。
Sametimeはインストールする気がなかったので、入れないでおいたら、ノーツクライアントが起動できない。
どうも、Sametimeのパスワードを入力するところで、止まってしまうようだ。

仕方がないので、Sametimeもインストールして、Domino 8.0.2+Sametime8.0というサーバ環境にしてみた。
その状態で、ノーツクライアントを起動すると、見事に起動できた。まさか、これが原因とは思いたくはないが・・・

とりあえず、これで、Windows XPにDomino 8.0.2 + Sametime 8.0 + Domino Designer + Domino Administratorという環境になった。


まだ保有している古いサンプルがいくつかあるが、これからはNotes/Domino 8でのサンプルも交えて記事を書いていけるようにしたい。

2008年10月22日水曜日

ノーツのバージョンを表示する

今回も手抜き。
なかなかネタが・・・

ノーツのバージョンを表示するサンプルです。
バージョンには、リリース番号と言われるものとビルド番号と言われているものがあります。
当然、返ってくる値が違うので、うまく使い分けをすることが必要になります。

開発者のみなさんがよく使うのは、NotesBuileVersionプロパティの方ではないでしょうか?
@Version関数に相当するものです。

サンプルは、実行するノーツクライアントのバージョンを表示するものです。

Sub Click(Source As Button)
 Dim session As New NotesSession
 
 Msgbox "リリース番号:" & Chr$(9) & session.NotesVersion & Chr$(10) & _
 "ビルド番号:" & Chr$(9) & session.NotesBuildVersion, 0, "このクライアントのノーツバージョン"
End Sub


@関数のVersion関数では、NotesBuildVersionの結果と同じものが表示されます。

Notes/Dominoがわからないときはこちらへ!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月20日月曜日

文書の削除のチェック

文書の削除イベントを拾うというもの。
文書のオープンや書き込みなどはフォーム単位で設定するが、フォームの中に「文書を削除した」というイベントはない。

実は、
設計要素-その他-データベースリソース-データベーススクリプトのQuerydocumentdeleteイベントにセットします。
つまり、各フォームではなく、データベース全体として捉えるのである。
ビューで複数文書を削除する場合など、選択する文書によってフォームが違ったりするし、フォームを開いている状態で、Deleteキーを押しても文書は削除できるし、というように、色々な場面で文書の削除ができるからであろう。
と勝手に推測している。

サンプルは、文書を削除する際に、本当に削除して良いかどうかの確認ダイアログを表示するものである。
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    '削除の確認メッセージ(「はい」「いいえ」のボタンが出る)
    res = Messagebox( "ホントに削除しますか?", 4 + 32, "文書の削除" )
    '6は「はい」を選択、7は「いいえ」を選択、elseはエラー処理
    Select Case res
    Case 6:
        Messagebox "削除フラグをOnにしますが、文書は削除されません。", 0, "文書の削除"
    Case 7:
        Continue = False
    End Select
End Sub


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月17日金曜日

データ型について

前にも書いたと思うが・・・みんなヘルプは読んでるかな?
ノーツは情報が少ない!と言われているけど、大抵のことはヘルプDBを読めば解決してくれるものだ。

ヘルプ、Administratorヘルプ、Designerヘルプ、日本語環境設定ガイド、Notes/Dominoリリース
ノーツDBなんだから、全文索引をつければ検索も快適に行えるし、サンプルコードだって豊富に付いている。

私がここに書いている記事も、ほとんどはヘルプからの引用だ。もちろん、実体験をしたからこそ、書けるものではあるが。
プログラムが動かない、どの関数を使えば良いか分からない!という時こそ、ヘルプを見てほしい。


CCur関数を使うと、小数点4桁以下が切り捨てられるという話があった。
まず、CCur関数ってどんな仕様だっけ?と思い、ヘルプを読んでみた。
そうしたら、
「CCur 関数は、小数 4 桁に丸めて expr の数値を Currency 型の値として返します。」
とあるではないか。
この関数を使う際、ヘルプを見てから使っていれば、このような疑問は起きなかったはずである。
(そもそも、よくこんな関数知っていたなぁ。というのが私の感想である)

では、どんな関数を使えば良いのか?それもヘルプに出ている。
「関連項目」として、関係する関数やクラスなどがリンクとして表記されているのだ。
そこから、探していけば答えはすぐに見つかるはず。

他人に聞くな。とは言わない。もちろん、自分より詳しい人はたくさんいるであろうから、彼らの智恵を借りることは良いことである。
しかし、自分で調べられるなら、その方が早いし、確実である。


まずは、ヘルプを読もう!
それからもで遅くないよ。




Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

文書内のフィールドの値を取得する

やってそうでやってなかったみたいなので・・・
今回は文書内のフィールドの値を取得してみよう。

doc(NotesDocumentクラスの変数)内のSubjectフィールドの値を取得する場合、
サンプル等でよく見かけるのが、
doc.Subject(0)という書式である。
これは、「拡張クラス」構文と言って、NotesDocumentクラスのGetItemValueメソッドと同じ働きをするものである。
なお、(0)はSubjectフィールドの1つめの値という意味である(フィールドは複数値を許可していることがあるので、このような設定が必要になる)。

だったら、GetItemValueメソッドは不要ではないか?と思ってしまうだろう。
ところが、次のような場合は、「拡張クラス」構文は利用できないので、GetItemValueメソッドを使う方が良いのである。
例)Subject_1、Subject_2、Subject_3のフィールドの値をそれぞれ、i(1)、i(2)、i(3)という変数に格納する。
普通なら、
i(1) = doc.Subject_1(0)
i(2) = doc.Subject_2(0)
i(3) = doc.Subject_3(0)
となるのだが、これではSubject_xxが100まであったら、とてもじゃないが書いていられない。
ということで、
For n = 1 to 3
i(n) = doc.GetItemValue( "Subject_" & cstr(n) )
Next
とするのだ。
こうすると、cstr(n)はループの回数に従って、1,2,・・・と増えていき、
結果として、Subject_1,Subject_2・・・としていくことができる。
後は、これをGetItemValueで取得していけば良いのである。

なので、処理の内容によって、うまく使い分けてほしい。



今回のサンプルは、至ってシンプル。ByCategoriesビューで最初に取得した文書のSubjectフィールドを取得して画面に表示するものである。

Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim tmp As Variant
    
    Set db = session.CurrentDatabase
    Set view = db.GetView( "ByCategories" )
    Set doc = view.GetFirstDocument
    
    tmp = doc.GetItemValue( "Subject" )
    Messagebox tmp( 0 )
End Sub






Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月16日木曜日

アップデート講座を受講してみた

あんなもん受かるかぁ!で書いたが、Notes8のアップデート試験は散々な目にあった。
このままの調子で、再度受験しても受かるわけはないので・・・

IBM Lotus Domino8 アプリケーション開発アップデート
の認定講座を受講してきた。

講習自体はそんなに難しくはなく(1日コースなので、薄っぺらいこと・・・)、もっぱらどのような問題が試験に出たのか、どのような事を学習すればよいのか?ということに重きを置いてみた。
講師の方に色々と聞いてみたが、結局の所、ほぼ丸暗記することをお勧めされたのであった。
ということで、オンラインヘルプの必要箇所を印刷して暗記しよう!

それで、受かるのかなぁ?受験日も決めないといけないし・・・

2008年10月10日金曜日

NotesURLを作成する方法(@関数の場合)

NotesURLを作成する方法(LotusScriptの場合)で紹介したNotesURLを作成する方法の@関数版。


サンプルは自文書のNotesURLを作成するもの。
ポイントは、ノーツDBのレプリカIDを取得するところ。
@ReplicaIDで取得すると、レプリカIDの中に":"が含まれるのだ。NotesURLとして利用する場合、この":"は不要(というか、あるとエラーになる)なので、取り除いておくことが必要になる。

srv := @Name([CN];@Subset(@DbName;1));
svn := @If(srv="";"localhost";srv);
dbn := @ReplaceSubstring(@ReplicaID;":";"");
view := @ViewTitle;
docid := @Text(@DocumentUniqueID);

ret := "Notes://" + svn + "/" + dbn + "/" + view + "/" + docid;

@Prompt([Ok];"NotesURL";ret)


これを覚えておくと、Notes クライアント以外でメールを受け取った時に活用できるので、便利かな。

Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

NotesURLを作成する方法(LotusScriptの場合)

NotesURLとは、Notes://で始まるもので、ノーツDBの固有の文書を表すものである。
IEのアドレス部分に入力したり、「ファイル名を指定して実行」の所に入力したりすると、ノーツクライアントが起動して、指定した文書を開くことができるのである。

他システムからノーツ文書を開くときに便利に使える。

そのNotesURLを作成する方法を考えてみた。
サンプルは、現在の文書からNotesURLを作成するものである。
ビューで実行しても、文書を開いて実行してもできるようにしてある。
ただし、文書を開いて実行する場合、「現在のビュー名」が取得できないため、
"($All)"固定にしている。

Sub Initialize
 Dim uiws    As New NotesUIWorkspace
 Dim uidoc   As     NotesUIDocument
 Dim udoc    As     NotesDocument
 Dim db      As     NotesDatabase
 Dim srv     As     NotesName
 Dim session As New NotesSession
 Dim docs    As     NotesDocumentCollection
 Dim uiview  As     NotesUIView
 Dim view    As     NotesView
 Dim nurl    As     String
 Dim svn     As     String
 Dim vname   As     String
 
 Set uidoc = uiws.CurrentDocument
 If uidoc Is Nothing Then
  Set db     = session.CurrentDatabase
  Set docs   = db.UnprocessedDocuments
  Set udoc   = docs.GetFirstDocument
  Set uiview = uiws.CurrentView
  Set view   = uiview.View
  vname = view.UniversalID
 Else
  Set udoc = uidoc.Document
  Set db   = udoc.ParentDatabase
  vname = "($All)"
 End If
 Set srv = New NotesName( db.Server )
 If srv.Common = "" Then
  svn = "localhost"
 Else
  svn = srv.Common
 End If
 
 nurl = "Notes://" & svn & "/" & db.ReplicaID & "/" & vname & "/" & udoc.UniversalID
 Msgbox nurl
End Sub


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月9日木曜日

スクリプトでテキストリストを操作する

テキストリストを扱ってみよう。
テキストフィールドに複数の値をセットしたいときに便利。

サンプルは、自文書の返答文書として、文書を作成。
その文書のテキストフィールド(複数値可)に値をリストとして追加していくというもの。


Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim uiws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    
    '返答文書関連の変数の定義
    Dim resdoc As NotesDocument
    Dim item As NotesItem
    Dim subject As String
    
    'DBの全文書関連の変数の定義
    Dim docs As NotesDocumentCollection
    Dim doc2 As NotesDocument
    Dim i As Integer
    
    '自DBを取得する
    Set db = session.CurrentDatabase
    
    '自文書を取得する
    Set uidoc = uiws.CurrentDocument
    Set doc = uidoc.Document
    
    '返答文書の作成(resdocがdocの返答文書になる)
    Set resdoc = db.CreateDocument
    Call resdoc.MakeResponse( doc )
    
    'テキストフィールドをクリアする
    Set item = resdoc.ReplaceItemValue( "TextField" , "" )
    
    'DBの全文書のタイトルを取得して、テキストリスト形式で返答文書に埋め込む
    Set docs = db.AllDocuments
    For i = 1 To docs.Count
        Set doc2 = docs.GetNthDocument( i )
        subject = doc2.Subject( 0 )
        Call item.AppendToTextList( subject )
    Next
    
    'その他の項目を設定
    resdoc.Form = "Response2"
    resdoc.Subject = "バックグラウンドで作成した返答文書"
    
    '返答文書を変更したので保存する
    Call resdoc.Save( True, True )
End Sub





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


2008年10月8日水曜日

文書のアイテムの名前の一覧

Notes文書のアイテム一覧を表示する方法である。

DB中の各フォームのフィールド一覧で紹介したNotesFormクラスのFieldsプロパティと似ているが、文書内に存在するアイテムが対象となる。従って、フォームにない隠しフィールドも分かるようになる。

Sub Click(Source As Button)
    '自文書を取得するための変数の定義
    Dim uiws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    
    '結果表示用変数の定義
    Dim sbj As String
    Dim i As Integer
    
    '自文書の取得
    Set uidoc = uiws.CurrentDocument
    Set doc = uidoc.Document
    
    i = 0
    '文書のアイテム一覧を取得する
    Forall x In doc.Items
        i = i + 1
        sbj = sbj & Cstr( i ) & "." & x.Name & Chr$(10)
    End Forall
    
    Messagebox sbj, 0, "文書のアイテム一覧"
End Sub




Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月7日火曜日

文書のアイテムの最終更新日

文書にあるアイテムの最終更新日を取得する方法。
これでどのフィールドの値が変更されたかどうかが確認できるかな?

サンプルは、自文書の各アイテムの最終更新日を表示するものである。

Sub Click(Source As Button)
    Dim uiws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    
    Dim sbj As String
    Dim i As Integer
    
    '自文書の取得
    Set uidoc = uiws.CurrentDocument
    Set doc = uidoc.Document
    
    i = 0
    sbj = ""
    
    '文書中の全アイテム分繰り返す
    Forall x In doc.Items
        i = i + 1
        'x.Nameがアイテム名で、x.LastModifiedがアイテムの最終更新日
        sbj = sbj & Cstr( i ) & "." & x.Name & "の最終更新日 " & Cstr( x.LastModified ) & Chr$(10)
    End Forall
    
    '結果の表示
    Messagebox sbj, 0, "文書中のアイテムの最終更新日"
End Sub


Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


2008年10月2日木曜日

親文書を検索する

自文書の親文書を検索する方法を紹介する。

サンプルは、ビューから実行する物で、選択した文書の親文書のタイトル(Subjectフィールド)を表示するものである。
親文書が存在しない場合は、その旨のメッセージを表示するようになっている。


Sub Initialize
    '自DBの定義
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim docs As NotesDocumentCollection
    Dim doc As NotesDocument
    
    '親文書の定義
    Dim pid As String
    Dim pdoc As NotesDocument
    
    '現在選択されている文書の取得
    Set db = session.Currentdatabase
    Set docs = db.UnprocessedDocuments
    Set doc = docs.GetFirstDocument
    
    '親文書の文書IDを取得する(存在しない場合は、Nullを返す)
    pid = doc.ParentDocumentUNID
    If pid = "" Then
        Messagebox "この文書には親文書は存在しません。", 0 + 16, "親文書の検索"
        Exit Sub
    End If
    
    '取得した親文書のIDを元にDBを検索(実際に親文書があるかどうか)
    Set pdoc = db.GetDocumentbyUNID( pid )
    If pdoc Is Nothing Then
        Messagebox "親文書が存在しません。削除された可能性があります。", 0 + 16, "親文書の検索"
    Else
        '親文書のタイトル(Subjectフィールドの内容)を表示する
        Messagebox "親文書のタイトルは、『" + pdoc.Subject(0) + "』です。", 0 + 64, "親文書の検索"
    End If
End Sub



Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

2008年10月1日水曜日

メールアドレスの抽出

文書中のメールアドレスから、アドレス部分だけを抽出する方法。

どのアドレスに送信してきたのかを確認するのに使えるかな。
Address821形式であれば、そのまま抽出すればよいのだが、
Address822形式の場合、フレーズパートが付いてくるので、分かりづらい。

サンプルは、そのフレーズパートを除いてしまうものである。

@For(
 i:=1;
 i<=@Elements(SendTo);
 i:=i+1;
 tmp:=tmp:@If(@ValidateInternetAddress([Address821];SendTo[i])="";
    SendTo[i];
    @Right(@Left(SendTo[i];">");"<")
   )
 );
@For(
 i:=1;
 i<=@Elements(CopyTo);
 i:=i+1;
 tmp:=tmp:@If(@ValidateInternetAddress([Address821];CopyTo[i])="";
    CopyTo[i];
    @Right(@Left(CopyTo[i];">");"<")
   )
 );
@For(
 i:=1;
 i<=@Elements(BlindCopyTo);
 i:=i+1;
 tmp:=tmp:@If(@ValidateInternetAddress([Address821];BlindCopyTo[i])="";
    BlindCopyTo[i];
    @Right(@Left(BlindCopyTo[i];">");"<")
   )
 );

@Prompt([Ok];"メールアドレスの抽出";@Implode(@Unique(@Trim(tmp))))


Notes/Dominoについてなんでも聞いてみよう!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ