メールDBのコピーを作成するツールを作りましたので公開します。
プログラムを変更すれば他のDBへも利用は可能です。必要に応じて改修してください。
用途が特殊なのでそのまま利用できるケースは少ないと思いますが、何かの参考になれば幸いです。
(最後にダウンロードリンクがあります)
きっかけは、メールデータベースのリストアの話からでした。
すべての文書ビューにある過去のメールを削除してしまったのでバックアップからその部分だけを抽出したいとの要望です。
要件
- 多数のメールデータベースを一括でコピーしたい。(レプリカIDを変更するため)
- コピー先のデータベースには、ある日時より前に作成された文書だけをコピーしたい。(全文書だとサイズが大きいため)
- 可能ならばデータベース内のフォルダを維持した状態でコピーしたい。
例
- 2年以上前に作成された文書だけをフォルダを維持した状態で新規メールデータベースへコピーする。
手動でデータベースをコピーする場合は、フォルダを維持したまま可能ですが、「多数のデータベース」で「ある日時より前に作成された文書」を選別するのは面倒です。
LotusScript の CreateCopy(NotesDatabase クラス)では設計のみで文書はコピーされません。
文書は別途コピーすればよいのですが、フォルダに文書を移動した状態を再現するのが手間がかかりそうです。
調べていると IBM のサイトにやりたいことに近い資料がありました。
(参考)LotusScript を使用してメールデータベース間ですべての文書とフォルダをコピーする方法
サイトを参考に作成したのが以下のデータベースです。
【こだわりポイント1:ヘルプモード】
画面左上の「ヘルプモードへ切り替え」をクリックするとメニュー部分が使い方の説明に変わります。
ヘルプモードでは、説明にしたがって直接操作を行うことが可能です。
青色文字をクリックするとビューが開きます。
黄色文字をクリックするとアクションが実行されます。
ヘルプ画面と行き来する必要が無いので使いやすくなるかな?と考えて実装してみました。
【こだわりポイント2:ログ出力】
今回は大量のDB、フォルダ、文書を処理するのでログをわかりやすくするために、カラーにしてみました。
(リッチテキストフィールドにスタイルを指定して出力しています)
また、項目をタブ区切りで出力しているのでコピー&貼り付けで Excel に簡単に集計することも可能です。
その他、テストを行いやすいようにログ出力の内容(DB~デバックレベルまで)を変更できるようにしました。
注意:
処理件数が多い場合、詳細なログを出力するとログが開けなくなったりする恐れがあります。
通常は、「3.DB単位」または「2.フォルダ単位」でよいかと思います。
それ以上の詳細なログは処理対象が数十から数百文書程度に限った場合のみご利用ください。
結果として、ログのプログラムがわかりづらくなってしまいました。
次回への反省点です。
【使い方】
1. データベースの登録
「1.データベース-1.登録」からデータベースを登録します。
登録には 個別登録 と 一括登録 の2つの方法があります。
個別登録 : 1つのデータベース毎に手動で登録
一括登録 : サーバーまたはローカルのデータベースを検索して自動登録
2. コピー対象の選択
「1.データベース-2.有効化」からコピー対象とするデータベースを指定します。
指定には 個別 と 一括 の2つの方法があります。
個別 : 上記1で登録した文書を開いて「コピー対象」をチェック(有効)
一括 : ビューで複数のデータベースを選択して 一括[有効化] をクリック
※ コピー対象外とする場合は、一括[無効化] をクリックしてください。
3. コピー対象の確認と実行
「1.データベース-3.コピー実行」でコピー対象のDBを確認します。
次に 環境設定 をクリックして設定を入力・確認・保存します。
データベースのコピー をクリックするとデータベースのコピーが始まります。
4. 結果の確認
データベースのコピーが終了するとログが開きます。
ログを確認するには、「2.ログ-1.概要」または「2.ログ-2.詳細」を開きます。
【制限事項】
- 複数のフォルダに文書が存在した場合、最初に処理したフォルダへのみ文書が格納されます。
(例えば、「受信ボックス」と「見積もり」フォルダに同一文書が存在した場合、最初に処理されたフォルダにのみ文書が存在します)
- 処理するフォルダは、「受信ボックス($Inbox)」と「フォルダ名が "(" で始まらないフォルダ」です。
"(" で始まるフォルダはシステムフォルダとして除外します。
- 検索条件の日付は @Created で判断しています。「すべての文書」ビューで表示される日付とずれている事があります。
結果が意図したものと違う場合は、「すべての文書」ビューを元にビューを作成し、@Created を表示する列を追加して確認してみてください。(追記 2016/03/20)
【最後に】
- ご使用前には、設計への署名をお願いします。
- 簡単なテストは行っていますが、ご利用の際には自己責任でお願いします。
【ダウンロード】
2016/03/20 不具合修正
- アクセス権限がないDBに対してのエラー処理の修正
- キャンセル時にログが作成されないように修正
2016/03/20 不具合修正と機能追加
- 細かい不具合の修正
- 有効/無効フラグのアイコンの変更
-
コピー実行後は「有効」を「済み」に設定、また実行日時を記録するように変更
「1.データベース - 4.実行日時別」ビューを追加し、次回実行予定/(未実行)/(実行済み:タイムスタンプ)を区別できるようにしました。
これらの変更で分割して実行し易くなりました。 -
データベース登録時、既に登録されているデータを削除せずにデータのみを更新するようにしました。
【開発環境】
- Notes 8.5.2 FP4
- Notes 9.0.1 FP5