- 締切済み
LotusNotes添付ファイル名取得書き出し
よろしくご教授おねがいします。 業務でLotusNotesDominoを使うことになりました。バージョンは5だったかと思います。とにかく古いバージョンでした。 LotusNotesが入ったパソコン一式を用意されまして、主に社内/社外メールのメールソフト用に現在使うことになっているのですが、雑多なメールをLotus以外の様々なツールにひも付けする必要性がどうしてもあり、苦労してます。 受信メール本文や送信情報は、書き出し、一括書き出しでtxtファイルに変換できるので、あとはCだのPerlだので好きなように体裁を整えるプログラムを組めましたのでまず問題ありませんでした。 ところが、添付ファイルの書き出しに問題がありまして、書き出したtxtファイルには添付ファイル名が入っているものと、いないものがあるのです。入っているものはその名前を取得できるので、融通がきくのですが、添付ファイル名が入っていないものは、どうしようもありません。 書き出しを行う前、または後に、一つ一つ受信メール(または書き出しメール)を開いて手動で添付ファイル名を追加するしかないのです。 これはさすがにきついので、なにか方法がないか、アドバイスを質問させていただいている次第です。 ちなみに、Lotusのしくみ自体、まったく理解していません。どうやらデータベースやバックアップがlan上のどこかにあるらしいというくらいの知識です。また、フリーソフトやプラグインについても入れていいのかどうか、基本変なソフトは社用パソコンには入れれないですし、Lotusを知らない私にはそういうもののリスク度は判断はできません。ですから、そういうのがどのていどか安全だと十分説明いただければプラグイン等も検討できるでしょうし、それが叶わなければ自力でなんとかしようと考えています。 5から8などへのバージョンアップが普通にできてそれで解決できるのならそれでもいいです。普通にというのは、勝手にそういうのをやってもいいようなソフトなのか、無料なのか、たとえばブラウザとかだと、常に最新のを入れるのがむしろ常識なので勝手にアップグレードしてもいいですし、Adobereaderとかもそうですが、LotusNotesはどうなのかという疑問です。 ちなみに、そういうのは社内でそれに精通している人に聞くのが筋でしょうが、そうもできない(色んな意味でそういうことはしない方がいい)環境ですのでここで質問させていただいている次第です。 話をもどします。 素人ながら、イメージとしては、メールに入っている添付ファイル名を何らかの形で簡単に取得する方法があるのならそれを教えていただきたい、もしくは、designerというツールでそれが可能かつ独学で10~100時間程度でその部分だけを作れるかつLotusのlanサーバーやソフトをいじったり追加インストールしたりしなくていいのなら、そういう方法でもいい、と考えています。 Lotus以外のメールソフトへの転送、そこから添付ファイル(名)ゲットという方法は、それが自分のパソコン内で完結するハイセキュリティーな方法ならそれもありだと考えていますが、pCが普通のwindowsですのでメールサーバーは入っていませんから可能なのかどうか疑問です。 言い忘れましたが、添付ファイル自体は取得する必要はないです。添付ファイルは必要そうなら受信時にそれだけ直接保存で落としますし、基本サーバーに置いとくつもりですので。 受信メールに添付されているファイル名だけが色んな意味で必要だということです。 よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hirorin38
- ベストアンサー率59% (388/648)
Notesメールにある添付されているファイル名を取り出したいのですよね。 Notesメールの設計をできる権限を持っていて、Lotus Scriptのプログラムが組めれば、可能です。 ファイル名を取り出すには、Nameというコマンド使います。 たとえば、以下のようにプログラムを組むとします。 Dim doc As NotesDocument Dim rtitem As Variant Dim object As NotesEmbeddedObject Dim objectName As String '...set value of doc... Set rtitem = doc.GetFirstItem( "Body" ) If ( rtitem.Type = RICHTEXT ) Then Forall x In rtitem.EmbeddedObjects objectName = objectName & ", " & x.Name ' x.Name にファイル名が入ります。 End Forall End If 添付された一連のファイル名は、objectName に入ります。 (objectNameの文字変数の最初に ","が付いてしまいますので、取り除く必要がありますが。) もし、ファイル名がない場合には、x.Name のところには入りませんので、その辺は、IF文を使って場合分けする必要があります。
- IDii24
- ベストアンサー率24% (1597/6506)
このレプリケーション機能もバッテイング文書が発生してよろしくない機能なんで本来止めるべきなのですが、サーバー側を更新しない設定でレプリケーションするには問題ないでしょう。設定で相互の更新に関する設定が出来ます。 それにNotesにはレプリケーションとは別にコピー機能もあるので、コピーを使えばローカルに独立したDBを作る事が出来ます。サーバに更新は出来ません。 それとExcelのVBAからサーバーを参照するのは、別にサーバー側をいじるという事ではありません。ローカルのNotesクライアントからアクセスするのと変わりません。ですのでローカルにコピーしたDBに対して作成し、十分テストして上手く動いたら、参照先をサーバーに変更すればよいのです。 サーバーのDBにスクリプトを作るわけにいかない場合は、なおさらExcelなどからの参照が有効だと思います。
- IDii24
- ベストアンサー率24% (1597/6506)
もしVBが書けるならこの辺を参考に。 http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256BC80071114F 名前を羅列するスクリプトでは無いのでカスタマイズが必要です。添付ファイルが壊れる可能性もあるので、最初はテスト用にDB:をコピーしてから作ってください。 NotesはNotesScriptというVBライクな言語と式と言われる簡易コマンド、さらにJavaScriptの3つの言語でプログラミングできます。 これが事を複雑にしている原因で、すべての言語をまぜこぜに記述出来てしまい。人によっては3つの言語をあちこちで使うので全く分からないプログラムになります。 さらにイベントが起こる箇所それぞれにコードや式を記述できるため、ある命令はボタンに、ある命令はフィールドにある命令は独立してそれぞれが記述出来るので、はっきり言えば作った人が気ままに作成できるので他の人にはわからないという困ったアプリなのです。最悪はそれで破綻する会社もありますので注意です。 そこで解決策はVBとかVBAで外部からNotesを読むという方法です。NotesはこのサンプルのようにVBと互換性があります。たとえばDim ws As New NotesUIWorkspaceのようなオブジェクトはNotesのモジュールを参照設定することで呼び出せます。あるいはCreate Objectでセットすれば参照設定もいりません。参照させればNotesの中でプログラムするのと同じ感じで記述できます。つまりAccessからExcelを参照するような書き方ですね。 つまりExcelのVBAからNotesを参照してセルに書き出すことが可能です。 詳しくはここでは書ききれないのでWebをググって見てください。 Notesには内部オブジェクトの操作と、UIと言われるメニューそのものを動かすクラスがあります。その違いも考慮が必要です。 添付ファイルはリッチテキストに張り付いてるのでさらに面倒です。それ用のコマンドを使います。 とにかくプログラムに慣れてる人なら3日もあれば熟知してしまうほど簡単なシステムです。それゆえに素人が片手間にいろいろ作って、手が付けられないほどめちゃくちゃになった会社を多く知っています。そういう会社はMSなどがExchengeに変換を引き受けるなどの請負をしてますが、本来はNotesは使わない方がよいシステムだと思います。便利なのですが、便利がそんなに簡単なわけがないという事も頭に入れておきましょう。
補足
VBは初心者レベルです。 アドバイスいただいた方法は、NotesのUI側ではなくデータベース側にアクセスするようですので、残念ながら私の質問の「Lotusのlanサーバーやソフトをいじったり追加インストールしたりしなくていい」に合わないような気がします。 しかし、一旦DBをローカルにコピーできるのならそれは目的達成の可能性があるような気がします。 そこで、要となると思うのでおしえていただきたいのですが、LotusNotesのレプリケーションやアーカイブの作成というメニューは、いちユーザーが勝手に使っていい機能なのでしょうか?Notesをみたところ、レプリケーションというのがサーバー上に既に存在しているようでした。その状態でユーザー(私)が勝手にもう1つレプリケーションやアーカイブをローカルに(作れるのなら)作ってもいいのでしょうか?ホントに基本的な質問ですが、いちユーザーが気軽に作っていいのか悪いのかさえネットでみても確証が得られず謎なので、ご教授願えれば大変助かります。今回の場合、レプリケーションまでせずともアーカイブでいいような気もしますが、アーカイブすると元データがなくなったりすると考えどころです。アーカイブは完全な移動でしょうか?それともデータの複製ができるのでしょうか?その点もご教授願えれば大変助かります。 どうぞよろしくおねがいします。
お礼
ありがとうございました。 大変勉強になりました。アーカイブは完全移動ということでしょうか。アドバイスいただいたとおり、まずはコピー機能を探してそれでトライしてみようとおもいます。 ありがとうございました。