Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] フィールド値一括置換・削除ツール

開発をやっていると、フィールドの値を変更・削除したいケースが頻繁に発生すると思います。ちょっとした変更なのにいちいちエージェントを作るのは面倒ですし、そのエージェントがゴミとして残ってしまってうっとうしくなる場合もあると思います。

そのような、ちょっとした変更・削除を行うソフトを開発してみましたので、使いたい人は使ってみてください。

概要

本ソフトを起動すると、以下のような画面になります。

一括変換ツールの画面

大まかには、以下のようなことができます。

  • 複数文書のフィールド値を一括置換・削除できます。(文書が開いている場合は、その文書が対象となります)
  • 新規フィールドフィールド名を直接入力することにより、新規フィールドを追加することができます。
  • 置換後の型(文字列、数値、日付/時刻、複数値)を選択できます。
  • フィールドの属性・フラグ(作成者、読者、名前、Summary)を指定できます。
  • @関数式を使用することにより、複雑な条件での値置換をすることができます。

動作環境

本ソフトは R6.0x 以上のノーツクライアントで動作します。
R5 は動作対象外、R8 はテスト環境を作っていないのでテストしていません
R8 で動いたよーという方はコメントをいただけるとうれしいです。
(2009/10/05: R8での動作を確認しました)。

また、本ソフトはHTAを使用してますので、IE6 以上がインストールされていて、HTAが動作する環境であることも必要です。
ウイルスソフトや会社の環境によっては、動かない場合もあるかもしれませんので、あしからず。 (要望があれば VB 版を作るかも?)

ちなみに、IE8 環境でもまだ試しておりませんので、こちらも動いたよーという方はコメントをいただけるとうれしいです。(2010/05/23追記: k2n0r1 さんに動作確認していただきました。k2n0r1 さん、ありがとうございます!)ちなみに、HTA にした理由は、会社の環境が VB などがインストールされていない場合が多いので、その場合でもソースをいじれるようにしたかったためです。)

ライセンス

当ソフトはフリーソフトです。
ご自分で使用する分には、ソースを変更してもかまいません。

ただし著作権は takenoff が保有しておりますので、名前を騙って再配布するような行為はやめてください。

既知の問題・注意事項

  • 複数値の場合、値に「;」が含まれると、初期値が「;」で分割されてしまいます。
    (初期値だけが問題で、置換する際に値を元に戻せば問題ありません。)
    これは言語の問題のようで、今のところ解決できません……。
    (2009/10/05: この問題は Ver.1.01 で解決しました。ただし、改行を含む複数値については、区切り文字が改行なので、改行で分割されてしまいます。)
  • フィールドを選択したときに右側のペインに表示される初期値は、選択している文書のうち、作成日が最も古い文書の値となります。
    ハイライトしている文書の値ではないので注意してください。
  • ソフトを起動した後にビューや文書を切り替えないようにしてください。
    処理対象のビューや文書は、あくまでソフトを起動したときに表示されていたものが対象となります。
  • R8 で、複数文書を選択しても1文書しか置換できない現象が発生することがあるようです。原因は不明ですが、ノーツを再起動したり、何度か当ソフトを起動していると、いつの間にか直るようです……orz (2009/10/05追記)
  • 暗号化されたアイテムは、暗号を解読できる場合は、復号化後のデータに置換されます。(2012/08/20追記)

免責事項

当ソフトを使用したことによって発生した損害については、作者は一切賠償責任を負わないものとさせていただきます。

特に、このソフトの性格上、誤った操作によりフィールド値を不正に書き換えたりしてしまうと、取り返しのつかないことになることもあります。
(ありがちなのが、読者名フィールドに誤った値を入れて、誰も文書を見られなくなってしまった……など。フルアクセスアドミニストレータ権限があればなんとかなりますが、この権限がないと文書が復活できなくなります(> <))

必ずテストを行った上で、ご自身の責任において使用するようにしてください。

インストール方法

1. 以下のリンクから Zipファイルをダウンロードします。

batchcnv105.zip をダウンロード (約8KB)

2. Zipファイルをノーツデータディレクトリに解凍します。
(Zipファイルにはパスワードがかかっています(一般ユーザーに使用されると困るツールなので(^^; )。パスワードは、「"0"を入れておくと文書を保存できなくなる特殊フィールド名」です。大文字小文字を区別しますのでご注意を) パスワードがどうしても解らない方は、こちらをご覧ください。

(2009/10/05: Zip ファイルを落とすことに抵抗がある方は、http://takenoff.com/files/software/{パスワードの文字列}/batchcnv.html にアクセスし、表示されたソースコードをコピーして、テキストエディタにペーストし、「.hta」の拡張子で保存してください。)

3. ノーツクライアントを起動し、[ファイル]メニュー → [プリファレンス] → [ツールバーの設定] を実行して表示されるダイアログで、[カスタマイズ] → [新規] → [ボタン] をクリックします。

ツールバーの設定ダイアログ

4. 「ツールバーボタンの編集」ダイアログで、ボタン名と式を入力します。

ツールバーボタンの編集ダイアログ

式は、以下のように入力してください。(2010/01/18追記: パスの説明を「C:\\~」から「file:///C:/~」に変更しました。)

@Command([Execute]; "mshta"; "file:///{ノーツデータディレクトリのパス}/batchcnv.hta")

(設定例)ノーツデータディレクトリが C:\Program Files\Lotus\Notes の場合、以下のようになります(パスにスペースを含む場合は、%20とします)。

@Command([Execute]; "mshta"; "file:///C:/Program%20Files/Lotus/Notes/Data/batchcnv.hta")

5. ダイアログで[OK]をクリックすれば、インストール完了です。

(※上記の方法は、R6、R7 の方法です。R8 ではどうなのか不明……。(2009/10/05: R8 では [プリファレンス] ダイアログの [ツールバー] → [カスタマイズ] の画面でボタンを追加できます。操作方法はほぼ R6 と同じです。))

アンインストール方法

ノーツデータディレクトリの batchcnv.hta と、インストール時に作成したツールバーのボタンを削除すればOKです。

一般的な使用方法

1. ビューを開き、対象の文書にチェックマークを付けます。
1文書のみの場合でも、必ず付けてください(2010/01/18追記: Ver.1.02から、1文書の場合はチェックは不要になりました)。また、プレビューペインは閉じておいてください。)

ビューで文書にチェックマークを付ける

2. インストール時に作成したツールバーボタンをクリックします。

ツールバーのボタンを実行

3. フィールド一覧からフィールドを選択し、右側の入力欄で値を書き換え、[置換]ボタンをクリックします。(フィールドを削除したい場合は、フィールドを選択して[削除]ボタンをクリックしてください。削除時は、右側の入力欄の入力内容は無視されます。)

一括変換ダイアログ

  • フィールド一覧にないフィールドや、フィールドを新規作成したい場合は、フィールド一覧の上の入力欄に、直接フィールド名を入力してください。
  • $が付くフィールドは、フィールド一覧には表示されません。(が、直接入力すれば、取り扱うことも可能です。ただし、$UpdatedByのように変更できないものは、このツールでも変更できません)(2009/10/05: Ver.1.01 から、$付きフィールドもフィールド一覧に表示するようにしました(代わりに警告文を左下に表示)。ただし、あくまで $UpdatedBy のようなフィールドは置換・削除できません。)
  • フィールド数が500を超える場合は、パフォーマンスの都合上、初期状態ではフィールド一覧が表示されません。フィールド一覧を表示するには、左下に表示されるリンクをクリックしてください。
  • リッチテキストは削除のみに対応しています。 リッチテキストフィールドを選択した場合は、その旨のアラートが表示されます。(2009/10/05: Ver.1.01 から、ポップアップのアラートは表示せず、左下に警告メッセージを表示するよう、変更されています。置換・削除動作に変更はありません(置換した場合は、単なるテキストになる)。)

4. 確認メッセージで[はい]を選択すれば、置換(または削除)が実行されます。

確認メッセージ

実行結果

  • [キャンセル]ボタンにて処理を途中でキャンセルすることもできます。
  • 当然ながら、実行ユーザーが編集権限を持たない文書に対して実行しても、エラーとなります。

その他の機能

フィールドの型を指定する

「文字列」「数値」「日付/時刻」ラジオボタン

「文字列」「数値」「日付/時刻」を選択することにより、フィールドの型を変更することができます。(既存のフィールドを選択した場合は、型の初期値は自動的に判定されます。)

複数値かどうかを指定する

「複数値」チェックボックス

「複数値」にチェックを入れると、複数値として値をセットすることができます。

区切り文字は改行を使用してください。(したがって、複数値の各項目中に改行が含まれるデータについては、本ソフトでは扱うことはできません。(式を使用すれば可能ですが))

(既存のフィールドを選択した場合は、複数値フィールドの場合、初期値として自動的にチェックが入ります。また、読者名、作成者、名前を選択した場合も、自動的にチェックが入ります(名前系のフィールドで改行が入ることは基本的にないため)。)

フィールドフラグを指定する

フィールドフラグのラジオボタン

「作成者」「読者」「名前」「Summary」のいずれか(または複数)にチェックを入れることにより、フィールドフラグを変更できます。

「作成者」「読者」「名前」を選択した場合で、ユーザーIDを入力する場合は、基準書式(CN=が付くやつ)で入力するようにしてください。「作成者」「読者」の場合は、1文字でも間違えるとエラいことになる可能性があるので、充分に注意してください。

「Summary」は、ビューに表示するかどうかのフラグです。フォームにフィールドがある場合は、基本的にチェックを入れたままにします。

(既存のフィールドを選択した場合は、これらのフラグは、初期値として自動的にチェックが入ります。)

@関数式で置換する

「@関数式」ラジオボタン

「@関数式」を選択すると、@関数式によって値を置換することができます。

右側の入力欄には、値の変わりに@関数式を入力してください。

その戻り値が該当のフィールドにセットされます。

(例1)Subject の値を Subject の先頭3文字にするには、以下の式を入力します。

@Left(Subject; 3)

(例2)Flag の値が"1"の場合は FieldA の値を、それ以外は FieldB の値をセットする場合は、以下の式を入力します。

@If(Flag = "1"; FieldA; FieldB)
  • @Command や、UI系の関数(@Promptなど)は使用することはできません。
  • @ThisValue や @ThisName も使用できません。
  • 「@関数式」を選択すると「文字列」「数値」「日付/時刻」「複数値」の項目が非表示となります。これは、@関数式の戻り値によって型や複数値かどうかが決まるからです。

【注意事項】(2009/05/17追記)

@関数式を使った置換では、COM の機能を使用しています。が、R6.0.0~R6.0.3 のノーツクライアントでは、インストーラーの不具合により、デフォルトでは COM の機能が使用できません。COM の機能を使えるようにするには、コマンドプロンプトで以下のコマンドを実行して、COM をレジストリに登録する必要があります。

regsvr32 "{ノーツディレクトリのパス}\nlsxbe.dll"

また、@関数式による置換を行う際に、パスワードを要求されることがあります。パスワードダイアログを表示しないようにするには、ノーツクライアントで [ファイル]メニュー → [セキュリティ] → [ユーザーセキュリティ] で表示されるダイアログの [基本]タブにある、「他のNotesベースのプログラムでパスワードプロンプトを表示しない」にチェックを入れてください。(ただし、これによってセキュリティは低下します。)

文書を保存せずに置換(Ver1.02~)

「文書を保存」のチェックを外すと、文書を保存せずに置換できます。「文書の保存」チェックボックスは、文書を開いている場合のみ選択できます(ビューから置換する場合は、グレイアウトされます)。

謝辞

本ソフトについて、有益なアドバイスと、一部改修をしてくださったN尾さん、ソフトを使用してくれたA社のみなさん、ありがとうございましたm(_ _)m

変更履歴

Ver. 変更日 変更内容
1.05 2012/08/20
  • 処理対象となるDB名、ビュー名 or 文書タイトルを表示するようにした。
  • アイテムの更新日時を表示するようにした。
  • 文書を編集モードで開いている場合は、「文書を保存」のチェックを自動的にOffにするようにした。
  • その他細かい修正。
1.04 - (会社で作ったバージョンにつき欠番)
1.03 2010/08/02
  • ウィンドウサイズを変更可能にした。
  • ダイアログのボーダーを変更。
  • 起動時に画面がチラつく場合がある問題を修正。
  • ノーツの「移動」機能で開いたビューで、(チェックマークを入れない)1文書のみの選択時、エラーになる場合がある問題を修正。
1.02a 2010/01/18
  • 「文書を保存」オプションが「@関数式」の時に隠れてしまう問題を修正。
1.02 2010/01/18
  • 1文書の場合、チェックマークを付けなくても処理できるよう変更。
  • 文書を保存するかどうかを選べるよう変更。
  • $Linksなどを選択するエラーになる問題を修正。
  • Chr()を定数化など、ソースの整理。
1.01 2009/10/05
  • $付きフィールドもフィールドの一覧に表示するよう変更。(その代わり、警告文を左下に表示)
  • 小文字のフィールドが正しくソートされない問題を修正。
  • ページをフォーカスしている場合、システムエラーになる問題を修正。
  • 複数値フィールドに「;」が含まれている場合でも、初期値を正しく取得できるよう修正。
  • リッチテキストフィールドのポップアップ警告メッセージを表示しないよう修正。(その代わり、警告文を左下に表示)
1.00 2009/04/10 初版作成
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

Navigation

トラックバック

トラックバックはありません

コメント

このようなすばらしいソフトをフリーで提供されていることに驚きます。いまリンクからダウンロードしてみたのですが、下記メッセージがでて開けないようです。
できれば、あらためてファイルをサーバーにアップしていただけないでしょうか。

—————————
圧縮 (zip 形式) フォルダ エラー
—————————
圧縮 (zip 形式) フォルダは無効であるか、または壊れています。
—————————
OK
—————————

sanoさん、コメントありがとうございます! 🙂

ファイルが開けなくて申し訳ありませんでした。
どうもサーバー移転時にファイルをアップロードし忘れたみたいです。
大変失礼いたしましたm(_ _;m

現在はダウンロードできると思いますので、もう一度試していただいてよろしいでしょうか。

もしこれでダメなら、テキスト形式のデータを用意しましたので、こちらをダウンロードして、拡張子を .hta に変更してください。

http://takenoff.com/files/software/{パスワード}/batchcnv.txt

※{パスワード}の部分は、zipのパスワードと同じく、「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」に置き換えてください。大文字小文字は区別します。

さらにこれでもダメなら、メールします(汗

ありがとうございました。ダウンロードできました!明日会社で試してみます。

動きました。感動!本当にありがとうございます。

ご使用いただき、ありがとうございます!
喜んでいただければ、作者としてはこれ以上ない喜びです。
今後もどうかご贔屓を!

パスワードの「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」を教えてください!

あいあいさん、コメントありがとうございます! 🙂

ただいま自宅PC絶不調につき、パスワードは携帯からメールさせていただきました。
ご確認くださいませm(_ _)m

入力時間は気にしないでください。
ちょっとやさぐれタイムなんです。

このツール、今でも最大限に活用されております。きっとどこでもつかえますよね。だってこういう操作が必要な場合って結構あるもの。。

改めて、ありがとうございますです。

peiくん、こんばんは。
今ごろ褒めてくれてありがとう(^^;

なにやらやさぐれておるようなので、あとでメールしておくね。
では!

こんにちは、仕事でNotesDBのメンテナンスをしているのですが困り事がありネット検索しているとこのページにたどり着きました。是非ツールを利用させていただきたいのですが「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」のパスワードがわかりません。ご教授いただけないでしょうかm(__)m

のぶさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

はじまして、123です。大変興味深いので教えて下さい。

「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」のパスワードがわかりません。

123さん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

はじめまして、takeです。私も大変興味深いので教えて下さい。

「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」のパスワードがわかりません。

takeさん、コメントありがとうございます!

返信がものすごく遅れてしまって申し訳ありません。
なにぶんにも、仕事が忙しく家に帰れなかったり、風邪で寝込んだりしていたもので 😥

先ほどメールを送りましたので、ご確認いただければと思います。

はじめましてプリンです。
ひたすら膨大なフィールドを書き換えているところでこちらを見つけました。

「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」のパスワードがわかりません。
ぜひともこちらのツールを試してみたいです。
よろしくお願いします。

プリンさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

はじめまして、にくにくです。

非常に活用できそうなツールですね。
是非利用させていただきたいのですが、「”0″をセットしておくと文書を保存できなくなる特殊フィールド名」のパスワードがわかりません。ご教授くださいますようお願いいたします。

パスワードがわかいません。お教えください! 😥

にくにくさん、きょうこさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ!

はじめまして。さくら八です。

ツールを利用させていただきたいのですが、パスワードがわかりません・・。
お手数ですが教えていただけないでしょうか。

よろしくお願いいたします。

さくら八さん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

おはようございます。さくら八です。

さっそく利用させていただきました。
便利なツールありがとうございます!

さくら八さん、わざわざご利用報告ありがとうございます! 😀

喜んでいただければ作者冥利につきます。
今後もどかご贔屓を! 😀

なおといいます

ツールを利用させていただきたいのですが、パスワード教えていただけないでしょうか。

お手数ですがよろしくお願いいたします。

なおさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

ツールバーボタンで複数文書の編集を行いたいと調べていてこちらにたどり着きました。
ツールをダウンロードさせていただきましたが
私の知識では肝心のパスワードに到達できません(汗)。恐れ入りますがご教示いただけないでしょうか、よろしくお願いいたします。

のてうさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

初めまして「YU」と申します。

とても興味深いツールだとかんじました。
ダウンロードしましたが、パスワードがわかりませんでした。

よろしければパスワードをお教え願えませんでしょうか?

YUさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

ぜひ利用させて頂きたいのですが、
パスワードがわかりません。
教えていただけないでしょうか?
お手数ですがよろしくお願いいたします。

kj4231さん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

検索でこちらにたどり着きましたが
PWがわかりませんでした。

こちらの環境がXPSP3+IE8+Notes7.02ですので
IE8の動作確認報告も行いますので
お手数ですがよろしくお願いいたします

k2n0r1さん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

メール確認し利用しました
部署変更にDBメンテが間に合わずに出来た数百文書が救われました。
ありがとうございます。

XPSP3+IE8+Notes7.02環境での動作確認しましたのでご報告します。

k2n0r1さん、わざわざご利用報告いただき、ありがとうございます!
お役に立てたなら幸いでございます。

また、IE8での動作検証、ありがとうございました。
大変助かります! 😀

Notes開発の超初心者です。
大変素晴らしいツールの公開ありがとうございます。 😀
以下のことは可能でしょうか?
どうぞご教授ください。

あるフィールドの値を変更したいと考えており、そのフィールドを含む文書は約1000文書あります。これらの各文書にはすべてに違う値(数値)が入ります。

このツールを利用して、上記を一括変換することは可能でしょうか?

コバーンさん、コメントありがとうございます! 😀

文書ごとに違う値を入れるのは、このツールの苦手とするところでは
ありますが、@関数式置換機能を使うと、それっぽいことはできます。

以下は、文書の作成日順に連番をセットするサンプルです。

no := @Environment(“TMP_SEQ_NO”);
no := @If(no = “”; 1; @TextToNumber(no) + 1);
@SetEnvironment(“TMP_SEQ_NO”; @Text(no));
no

# 「“」「”」は半角のダブルクォーテーションに置き換えてください。
# なぜかコメント欄だけ全角に変換されてしまう……(涙

処理後に、notes.ini に「$TMP_SEQ_NO=~」という行が作られますので、
連番を初期化したい場合や、不要になった場合は、行ごと削除してください。

@DbLookup なんかも動きますので、マスタの値をとってきたい場合
なんかは @DbLookup を使うとよいでしょう。
フィールドの Value 式を書くようなイメージですね。

ご要望次第では、このツールでなく、スクリプトを書くしかない場合
もありますので、その点ご注意ください。

では、がんばってください! 😀

お世話になります。
ノーツについて調べていたらこのページを見つけました。
ぜひ利用させていただきたいのですが私の知識ではPWがわかりません。
お手数ですが教えて頂きたいです。

moriさん、コメントありがとうございます!
先ほどメール送りましたので、ご確認くださいませ。

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 9579 to the field below:

^
×