Notes データベースから kintone アプリを作る

目次

caution
警告

この記事では ver. 0.x.x の cli-kintone を使って説明しています。
ver.1.0.0 以降の cli-kintone の使い方は、次のページを参照してください。
kintone コマンドラインツール(cli-kintone)

はじめに

Lotus Notes *1 で運用しているアプリケーションを kintone で表現するとどうなるのか、 気になる方は多いと思います。
この記事では、サンプルツールを駆使して Notes データベースから kintone アプリを作る方法についてご案内します。

*1 Notes は、International Business Machines Corporation の米国およびその他の国における商標です。 ^

概要

以下のフローに沿って作成を進めます。

注意事項

  • 一連の手順はすべて Windows OS 上で実行する前提として記載しています。
  • Notes データベースによっては kintone へ登録できない場合があります。

事前に用意するもの

以下のツールを事前に準備しておいてください。

準備するもの 補足
kintone もちろん必要です。
Lotus Notes 動作確認したバージョンは 8.5.3 です。
Lotus Domino Designer 動作確認したバージョンは 8.5.3 です。
Windows PowerShell 動作確認したバージョンは 5.0 です。
ExportScript (ExportScript_20160805.txt) STEP1 で使用するスクリプトファイルです。
dxl2kapp (dxl2kapp_20170928.zip) STEP3 STEP4 で使用するツールです。
kintone コマンドラインツール (cli-kintone) STEP5 で使用するツールです。

手順

STEP1. Domino Designer でエージェント作成

エージェントの作成
  1. 書き出したい文書が含まれる nsf ファイルを Domino Designer で開きます。
  2. [コード]をクリックして展開します。
  3. [エージェント]を右クリックします。
  4. [新規エージェント]をクリックします。
  5. "タイプ" に "LotusScript" を選択し、他は任意の値を入力して[OK]をクリックします。
  6. 追加されたエージェントを選択します。
  7. ExportScript の内容を Initialize オブジェクトにそのまま貼り付けます。
  8. [Ctrl]+[S]で保存します。
アクションの作成
  1. 引き続き Domino Designer で書き出したい文書が表示されるビューを選択します。
    対象のビューに複数フォームの文書が混在している場合(メイン文書と返答文書など)、 STEP5 で処理が失敗します。
    事前に単一フォームの文書のみが存在する状態にしてください。

  2. アクションペインを右クリックします。

  3. [アクションの作成]をクリックします。

  4. アクションペインで追加したアクションをクリックします。

  5. プログラムペインに以下を追記します。

    1
    
    @Command([ToolsRunMacro];"{1で作成したエージェントの名前}")
  6. [Ctrl]+[S]で保存します。

STEP2. Notes でデータ書き出し

  1. 書き出したい文書が含まれる nsf ファイルを Notes で開きます。
  2. 書き出したい文書が表示されるビューを選択します。
  3. 書き出したい文書の左列を最大 50 行までクリックします。
  4. 「アクションの作成」で追加したアクションをクリックします。
  5. 処理終了後、C:\dxl フォルダーを開きます。

NotesData.xml が存在すればデータ書き出しは成功です!

STEP3. PowerShell でアプリデプロイ

  1. dxl2kapp(dxl2kapp_20170928.zip)を展開します。

  2. Windows PowerShell を[管理者として実行]します。

  3. PowerShell でスクリプトを実行できるようにするためのコマンドを実行します。

    1
    
    PS C:\> Set-ExecutionPolicy RemoteSigned
  4. dxl2kapp フォルダーまで移動します。

  5. deploy.ps1 を以下のとおり実行します。(中括弧{}の箇所は下表に基づいて要置換)

    1
    
    PS C:\dxl2kapp_20170928> .\deploy.ps1 C:\dxl\NotesData.xml https://{sub-domain}.cybozu.com {username}:{password}
    置換場所 置換する値 注意点
    {sub-domain} アプリを作成する kintone のサブドメイン
    {username} アプリ作成者にするユーザーのログイン名 デフォルトのアプリグループに、アプリの作成権限が必要です。
    {password} アプリ作成者にするユーザーのパスワード

実行後に"SUCCESS!"と出力されればデータ変換は成功です!
kintone にアプリが作られていることを確認してみましょう。

STEP4. PowerShell でデータ変換

  1. xml2csv.ps1 を以下のとおり実行します。

    1
    
    PS C:\dxl2kapp\_20170928> .\xml2csv.ps1 .\NotesData.xml

実行後に"SUCCESS!"と出力されればデータ変換は成功です!
upload フォルダーに実行日時のフォルダーが生成され、その中に CSV ファイルと添付ファイルがエクスポートされます。

STEP5. コマンドラインツールでレコード登録

  1. cli-kintone.exe を dxl2kapp フォルダー内に配置します。

  2. 登録先 kintone アプリのアプリ ID を調べます。

  3. cli-kintone.exe を以下のとおり実行します。(中括弧{}の箇所は下表に基づいて要置換)

    1
    
    PS C:\\dxl2kapp\_20170928> .\\cli-kintone.exe -a {appId} -d {sub-domain} -u {username} -p {password} -b upload -f .\\upload\\{folder-id}\\{number}.csv
    置換場所 置換する値 注意点
    {appId} 登録先 kintone のアプリID
    {sub-domain} 登録先 kintone のサブドメイン
    {username} レコード登録者にするユーザーのログイン名 登録先 kintone アプリのレコード登録権限が必要です。
    {password} レコード登録者にするユーザーのパスワード
    {folder-id} 登録対象の CSV ファイルが格納されているフォルダー
    {number} 登録対象の CSV ファイルのファイル名(拡張子抜き)

実行後に何も表示されずプロンプトが返ればデータ登録は成功です!
kintone アプリにレコードが登録されていることを確認してみましょう。

変換仕様

STEP3 STEP4 での変換仕様は以下のとおりです。

STEP3 での変換仕様

それぞれ次の値を使用します。

アプリ名
1
/database/@title
フィールドコード
1
/database/document/item/@name
フィールド名
1
/database/document/item/@name
フィールドタイプ

/database/document/item/ の値によって使用する値が異なります。

richtext の場合
1
リッチエディター[RICH_TEXT] + 添付ファイル[FILE]
datetime の場合
  • 値が"T"で始まる場合(例:T130000,00

    1
    
    日付[TIME]
  • 上記以外で、値に"T"を含む場合(例:20160831T130000,00+09

    1
    
    日時[DATETIME]
  • 上記 2 つ以外(例:20160831

    1
    
    時間[TIME]
number の場合
1
数値[NUMBER]
上記3つ以外 の場合
1
文字列(1行)[SINGLE_LINE_TEXT]

STEP4での変換仕様

概要
  • 1 つの <document> ノードにつき、CSV ファイルを 1 つ生成します。
  • <item> ノード 1 つを CSV ファイル 1 列に変換します。
    ただし、<richtext> ノードは STEP3 と同様に 2 列に変換します。
  • <document> ノードに含まれる <file> ノードは、CSV ファイルのファイル名と同じフォルダーにファイルの実体を復元します。

詳細
ノードの種類 XML ファイルでの値(変換前) CSV ファイルでの値(変換後)
(すべて) " ""
(すべて) ' ""
richtext <gif>filedata(base64encoded)</gif> <img src=""https://static.cybozu.com/contents/k/image/file/other.png"">
richtext <break /> <br>
richtext <table <table border=""1""
richtext <tablerow> <tr>
richtext </tablerow> </tr>
richtext <tablecell <td
richtext </tablecell> </td>
richtext <par <div
richtext </par> </div>
richtext <code></code> (削除)
datetime 書式によって変換後の値が異なります。
XMLファイルでは、次の書式があります。
  • YYYYMMDDThh:mm:ss,ss+hh(例:20160831T130000,00+09
  • YYYYMMDD(例:20160831T130000,00+09
  • Thh:mm:ss,ss(例:T130000,00
変更後、それぞれ次のようになります。
  • YYYY-MM-DDThh:mm:ss±hh:mm(例:2016-08-31T13:00:00+09:00
  • YYYY-MM-DD(例:2016-08-31
  • hh:mm:ss(例:13:00:00

2018/01/18 追記

この記事ではデータのインポート時 -f オプションのみ指定していますが、この実行方法は Version 0.9.0(2018 年 1 月公開)以降、推奨されません。
Version 0.9.0 以降、標準入力からのインポート対応伴い、データのインポート時は、--import オプションも合わせて指定する実行方法を推奨します。

実行例:

1
cli-kintone.exe --import -f importdata.csv -a 111 -d sub-domain -t token

現状は、従来の実行方法でも動作します。