IBM Notes にCSVを読み込ませる


IBM Notes にCSVを読み込ませる

 かつてはExcelがLotus 1-2-3形式をサポートしていたのですが、サポートされなくなってから123ファイルの読み込みを使わなくなって久しいものです。
 とはいえ、Excelのような表形式ファイルを読み込みたいという需要は引き続きあるため、方法を2つほどご紹介します。
 2案とも、このCSVを対応表のように取り込むものとします。

取り込みCSV
氏名, ふりがな, メールアドレス, 年齢
印九キー太, いんくきーた, [email protected], 18

【対応表】

要素 フィールド名 データタイプ
氏名 Name テキスト
ふりがな Kana テキスト
メールアドレス eMail テキスト
年齢 Age 数値

1.表形式のテキストファイル用COLファイル(形式ファイル)を使う

 以下のようなテキストファイルを1つ作成し、hoge.colなどとして保存してください。
※個人的にはこちらが楽にできるので、この方法をお勧めします。

COLファイル例1
HEADERLINE 1
; ----------------------------------------------------------------
; 列定義ステートメント
; ----------------------------------------------------------------
Name:UNTIL ",";
Kana:UNTIL ",";
eMail:TYPE Text UNTIL ",";
Age:TYPE Number UNTIL "";

 一番最後の項目の区切り文字が""(空文字列)であることは注意してください。ここを","としたり、何も指定しないと以下のようなエラーが出てうまく書き込めません。

 このファイルを作ったら、次の手順でCSVファイルを読み込みます。

  1. [ファイル]→[呼び出し]と選択
  2. 呼び出しCSVを選択。ファイル形式は[Tabular Text] とする。
    • 先にファイル形式を[Tabular Text] とすると、拡張子csvのファイルが表示されないので注意
  3. 以下スクリーンショットのように「形式ファイルの使用」にチェックを入れ、作成したCOLファイルを選択し、OKボタンを押す

 COLファイルには@式を入れることも可能で、CSVの値を変更しつつ取り込むことも可能です。
 CSVファイルを保持しつつ、NotesDB側の取り込みの際に値を調整したい場合に有用です。
 たとえば上記の例の場合フォームが定まらないのですが、以下のように設定することで、CSVからの読み込みをしつつ、フォームを設定することが可能です。

COLファイル例2
HEADERLINE 1
; ----------------------------------------------------------------
; 列定義ステートメント
; ----------------------------------------------------------------
Name:UNTIL ",";
Kana:UNTIL ",";
eMail:TYPE Text UNTIL ",";
Age:TYPE Number UNTIL "";

; ----------------------------------------------------------------
; 式
; ----------------------------------------------------------------
FORMULASTART
FIELD Form := "UserInfo";
FORMULAEND

 他詳しくは、以下を参照ください。

2.LotusScriptによるアクション等の作りこみにより解決

 COLファイルによる読み込みのほうが圧倒的に楽なのですが、LotusScriptによる取り込みも可能です。
 以下ページのコードをカスタマイズすることで、取り込みが可能です。
 こちらに詳しくまとまっていて、すぐ動くサンプルコードがあるのでリンクを共有します。

 ……早くxlsxやodsからの呼び出しができるようになるといいのですが。