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

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