スマートアイコン: アイテムの変更と削除

2008年11月20日 00:59

 文書の問題を調査するときに特定のアイテムの値を変えたり削除する、て事をよくします。
極端な話怪しい文書をもらってアイテムを1つずつ削っていけば最終的に問題が起こるアイテムまでは特定できますよね?もちろんフォームがエラーで開けなくなったり別の問題も起きると思いますが。
 そういうときにどういう方法を使うでしょうか?

こういうのはいちいちエージェントを作るのが面倒なので、スマートアイコンを作っておくと便利です。
今日はそんなときに必要になる処理がまとめて出来るスマートアイコンを紹介します。
昔似たようなスマートアイコンが各所で紹介されていたのですが、ここで見つけたのはその頃より色々と機能増強されていて、複数値や色々なアイテム型に対応していたので。以下のサイトにある例を日本語化して紹介しておきます。

一覧からフィールドを選んで、フィールドの型とかを指定して変えたい値を選ぶだけなので使い方は入れてみれば分かるんじゃないかと思います。
 
 僕はあるノーツアプリケーションがサービスインしたときに、特定のフィールド値を持つときに問題が発生する事が当日になって分かったので、暫定処置として問題が発生した文書をスマートアイコンで手当たり次第に修正して復旧していたことがあったのですが、そんな暫定処置にも使えます。

Modifying document item values

※ この辺の画面やUIはバージョンによって違いが大きいので、多少メッセージやメニューが異なる可能性がある点はご容赦下さい。
手順:
1. メニューから [ファイル] - [プリファレンス] - [ツールバーの設定]を選択します。
2. [カスタマイズ] タブを選択します。
3. [新規] - [ボタン] を選択し、ツールバーボタンを作成します。
  アイコンなどは必要に応じて分かりやすいものに変更して下さい
4. 以下の値を使用して下さい。
 ボタンの表題文字: 「フィールドの変更と削除」
 ポップアップヘルプ文字: 「フィールドの変更と削除」
 式; 以下の「スマートアイコン式」にあるものを使用して下さい。
5. ツールバーを保存します。


スマートアイコン式
REM {フィールドの一覧の取得};
List := @DocFields;
REM {Possible data types to
choose from.};
DataTypes := "テキスト型" : "日付型" : "数値型" : "Password" : "名前" : "共通名" : "フィールドの削除" : "テキスト複数値" : "日付型複数値" : "数値型複数値" : "名前 複数値" : "共通名 複数値";


DataType := @Prompt( [OkCancelList] : [NoSort] ;
EditField + " フィールドのアクションまたはデータ型の指定" ;
EditField + " フィールドのアクションまたはフィールドのデータ型を指定して下さい " ;
"テキスト型" ; DataTypes );


EditField := @Prompt( [OkCancelList] ; "変更するフィールドの選択" ; "変更するフィールドを選んでください:" ; "CustomerReply" ; List );


REM {Based on what type of data is being entered
different prompts will happen if any at all.};
RawValue := @If( @Contains( DataType ; "名前 複数値" );
@PickList( [Name] ); @Contains( DataType ; "名前" ) ;@PickList( [Name] : [Single] );
DataType = "フィールドの削除" ; "" ;
@Contains( DataType ; "Multi Value" );
@Prompt( [OkCancelEdit] ;
"新しい値: " + EditField ;
EditField + " フィールドの新しい値を : 区切りで入力してください" ; @Abstract([TextOnly] ; 254 ;
"" ; @Implode(@Text( @GetField(EditField) );":") ) );
@Prompt( [OkCancelEdit] ;
"新しい値: " + EditField ;
"新しい値を入力してください。(複数値は : 区切り)" ; @Abstract([TextOnly] ;
254 ; "" ; @Implode(@Text( @GetField(EditField) );":") ) ) );

REM {If data conversion doesn't work then don't set field.};
@If( DataType = "日付型" ;
@If( @SetField( EditField ;
@TextToTime( RawValue ) ) );
DataType = "数値型" ;
@If( @IsError( @TextToNumber
( RawValue ) ) ; "" ;
@SetField( EditField ;
@TextToNumber( RawValue ) ) ) ;
DataType = "共通名" ;
@SetField( EditField ;
@Name( [CN]; RawValue ) ) ;
DataType = "Password" ;
@SetField( EditField ;
@Password( RawValue ) ) ;
DataType = "フィールドの削除" ;
@SetField( EditField ; @DeleteField ) ;
DataType = "テキスト複数値" ;
@SetField( EditField ;
@Explode( RawValue ; ":" ) ) ;
DataType = "日付型複数値" ;
@SetField( EditField ;
@TextToTime( @Explode( RawValue ; ":" ) ) ) ;
DataType = "数値型複数値" ;@If( @IsError
( @TextToNumber( @Explode
( RawValue ; ":" ) ) ) ; "" ;
@SetField( EditField ; @TextToNumber
(@Explode( RawValue ; ":" ) ) ) ) ;
DataType = "名前 複数値" ;
@SetField( EditField ;
@Explode( RawValue ; ":" ) ) ;
DataType = "共通名 複数値" ;
@SetField( EditField ; @Name( [CN];
@Explode( RawValue ; ":" ) ) );
@SetField( EditField ; RawValue ) ); ""

定型文書を貼り付ける

2008年11月24日 23:33

Notes に限らず、メールや業務で使用しているNotesアプリケーションで、提携文や決まったリッチテキストデータを入れればよいような処理に遭遇することはないでしょうか。

今日は、Alan Lepofsky氏のブログから、そんな方のために応用範囲の広い、すばらしいTips を紹介します。Tipsというよりも、ローカルのNotes アプリケーションと言った方が適切かもしれません。

Paste Information Application

「Install Instructions」より下のセクションの指示に従って頂ければよいのですが、大まかには、
1. Quote.gifとPasteInformation.nsf をローカルのNotesデータディレクトリにダウンロード
2. クライアントのメニューより、[ファイル]-[プリファレンス]-[ツールバーの設定]を選び、左側のペインから「カスタマイズ」を選択してください
  (Notes 8 Standard 版の場合、メニューから、[ファイル]-[プリファレンス]を選択し、ノーツプリファレンスの画面から[ツールバー]-[カスタマイズ]を選択します。)
3. [新規]-[ボタン]を選択します。
4. 「アイコンの変更」ボタンを押します。
5. さきほど保存したアイコンを選ぶため、「作成」ボタンを選び、「イメージリソースの挿入」画面に移動します。
6. データディレクトリを選択し、quote.gif を選び、「OK」を押してイメージリソースの挿入画面を閉じます。
7. 以下の値をスマートアイコンに入れます。
ボタンの表題文字: 定型句の挿入
ポップアップヘルプ文字: 定型句の挿入
式:(リンク先にある式をコピーしてください)

という流れになります。
 これでメールのBodyフィールドにフォーカスがあたっているときにスマートアイコンを押すと自分の定型句が挿入できるようになります。

彼のBlogではオフィスまでの地図(画像つき)などを貼る例などが紹介されていますが、作業用のブランクの表データのようなものを入れたり、文字通りいつも使う提携文に使用したり、他にも応用範囲が広いのではないでしょうか。

 このデータベースは、ローカルで使用することを想定していますが、このデータベースをサーバー上に置いて、Notesデータベースのアクションとして実装すれば面倒なスマートアイコンのセットアップなしに全ユーザーが利用することができるし、サーバー上でデータベースの定型句を管理していれば、何かの変更があったときにも迅速に対応することができるようになるかもしれません・・・
 と、どのように使うかは色々あると思いますが可能性があるのではないかと思います。登録用のデータベースを日本語化するのもそれほど大変な作業ではないので(アクション、フォーム、ビューくらいをやれば十分なのではないかと。。)

直接使っても十分便利なツールですが、もし、こんな風に使ってみた!という例があったら、AlanのBlogでもよいですし、このBlogでもよいので是非教えて頂けると読者の参考にもなるのではないかと思います。

# 詳細な原因まで調べていないのですが、Notes8.xのStandardクライアントを使用すると貼り付け時に画面がうまく遷移せずにPasteInformation.nsfが開いたままになってしまうことがあるようです。
クリップボードにはデータは入っているのでそのまま貼り付けてください

スマートアイコン: 現在のフィールド値を使って別フォームに文書を作る

2008年11月26日 01:50

 今日もまたスマートアイコンの紹介をしてみます。

 あるノーツデータベースの情報を使って別ノーツデータベースに新規文書を作らないといけないようなデータベースがありました。
 元DBの情報を引き継ぐために手作業ででデータを引用していかないといけないので、単純で煩雑な作業が多い、と言う声が結構あったのですが、自分は設計者権限も無い事もあって、フォームレベルで連携して操作を簡易化することは出来なさそうでした。

 そこで考えたのが、こんな感じのスマートアイコンです。元文書をビューレベルで選択するか、フォームで開いた状態でスマートアイコンを押すと、新規文書が作成されます。ここで書かれている処理はそんなに奇抜でもなければ、難しい処理はしていないのですが、ノーツアプリケーションの機能がちょっと足りていないときなどにスマートアイコンで拡張していくと道が開ける事が多いのではないかと思います。実用的であればプロトタイプとして設計者に渡せば実現も早いのではないでしょうか。

出来るだけ汎用的に書き直してみたのですが、始めに青字のコピー先のデータベースやフォーム情報を入力して tmp_xxxのところにコピーしたいフィールド名をリストして、EditGotoField の行にコピー先のフォームでのフィールド名を指定していけばコピーするフィールドはいくつでも増やす事が出来ます。ただし、EditGoToFieldのようなUIの操作を前提にしているので隠しフィールドなどに入力する事は想定していないのと、文書リンクを貼る場合、操作以前にクリップボードに入っていた値は消えてしまうのであらかじめご注意下さい。

サンプル
Dest_Server := "ServerName/Org";
Dest_DBPath := "apps\\test.nsf";
Dest_Form := "MainTopic";


@Command([OpenDocument]);

REM{コピー先で文書リンクが必要な場合(クリップボードの値が失われるので注意!)};
@Command( [EditMakeDocLink] );

REM {右辺にコピーしたいフィールド名を指定して下さい};
tmp_idnumber := IDNumber;
tmp_subject := Subject;
REM {日付だけをコピーしたい場合の加工例};
tmp_date := @Text(Date_Created; "D0S0") ;

@Command([Compose];Dest_Server:Dest_DBPath;Dest_Form);

REM {フィールド値のセット};
REM {EditGotoField の行にコピー先のフォームでのフィールド名を指定して下さい};


@Command([EditGotoField];"Subject");
@Command([EditInsertText]; tmp_subject);

@Command([EditGotoField];"HNumber");
@Command([EditInsertText]; tmp_idnumber);

@Command([EditGotoField];"DateOpened");
@Command([EditInsertText];tmp_date);

REM {文書リンクを貼る場合には、EditPasteを使用します};
@Command([EditGotoField];"TelHistoryDocLink");
@Command([EditPaste]);

スマートアイコン: フィールド値をキーにして文書を開く

2008年12月01日 22:25

 これも本来はNotesデータベース側で設計として組み込んであるのが望ましいのではないかと思う事もあるのですが、ある文書のフィールド値をキーにして別のビューから情報を参照したいこと、てありますよね。
 注文書にある顧客番号から顧客情報を参照したり、別のDBのID値を入れているフィールドを使って、入力元の情報を参照したり、色々使う場面はあると思います。これもユーザーによって頻繁に参照する情報は異なるのであまりマニアックなものは以下の例のように自分用のスマートアイコンにするといいのではないかと思います。


スマートアイコン式:
REM {ビュー検索のキーとして使用するフィールド名を指定してください。};
FIELD IDNumber := IDNumber ;
dst_server := "ServerName/Org";
dst_db := "apps\\test.nsf";
lookup_view := "($Lookup)";

@Command([FileOpenDatabase];dst_server:dst_db;lookup_view;IDNumber;1)+@Command([OpenDocument])


セットアップ手順
1. クライアントのメニューより、[ファイル]-[プリファレンス]-[ツールバーの設定]を選び、左側のペインから「カスタマイズ」を選択してください
  (Notes 8 Standard 版の場合、メニューから、[ファイル]-[プリファレンス]を選択し、ノーツプリファレンスの画面から[ツールバー]-[カスタマイズ]を選択します。)
2. [新規]-[ボタン]を選択します。
3. 「アイコンの変更」ボタンで、任意のアイコンに変更してください。
4. 以下の値をスマートアイコンに入れます。
  xxx の部分は分かりやすい説明に変えてください。

ボタンの表題文字: xxxの検索
ポップアップヘルプ文字: xxxの検索

式:(上に記載してある式をコピーしてください)
5. OKボタンを押してツールバーの設定を終了します。


やっていることは非常にNotes的な処理なので、スマートアイコンの式も簡単ですよね。
これでキーになるフィールドを開いているときに、スマートアイコンを押すと該当文書を自動的に検索して文書を開く事が出来ます。このくらいの作業たいした事無い、て思うかもしれませんが画面遷移が自動化されるとかなり効率よく文書を開く事が出来るようになります。

是非試してみてください。

マシン固有のポリシー設定が可能に

2013年02月04日 09:02

Lotus Notes/Domino 8.5.3 では、マシンごとの属性を判別する新しい@関数が追加されています。これによって、指定したユーザーに対し、異なるマシンに異なるポリシー設定を適用できます。

判別可能な属性は、OS のバージョンと種類、マシンの種類、Basic 版クライアントまたは Standard 版クライアント、ラップトップ、デスクトップなどがあります。

新しい@関数は、「@GetMachineInfo」です。Notes 8.5.3 以降のクライアントに対して有効です。

関数名: @GetMachineInfo

構文: @GetMachineInfo([Keyword]; "キーワードストリングが必要")


主な keyword の例
IsLaptop ------- boolean型 ラップトップの場合に True を返す
IsDesktop ------ boolean型 デスクトップの場合に True を返す
IsSingleLogOn -- boolean型 シングルサインオンとしてインストールされている場合に True を返す
IsMultiUser ---- boolean型 マルチユーザーとしてインストールされている場合に True を返す
HasDesigner ---- boolean型 Domino Designer がインストールされている場合に True を返す
HasAdmin ------- boolean型 Administrator がインストールされている場合に True を返す
IsStandard ------ boolean型 Standard 版 が実行されている場合に True を返す
MachineName ---- String型 マシン名
Memory --------- 数値 メモリ(RAM)の合計容量
DiskSpace ------ 数値 空きディスクスペースの容量
IP ------------- String型 IPアドレス
MAC ------------ String型 MACアドレス


ポリシーでの使用方法などは、下記をご参照ください。

Title: (参考)マシン固有のポリシー設定
Doc #: 1620083
URL: http://www.ibm.com/support/docview.wss?uid=swg21620083

Title: (参考) pubnames.ntf への新しいマシン固有のポリシー設定の追加
Doc #: 1620382
URL: http://www.ibm.com/support/docview.wss?uid=swg21620382


最新記事