cybozu developer network

カテゴリー内の他の記事

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

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

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

* 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) STEP3STEP4で使用するツールです。 
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. プログラムペインに以下を追記します
    @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 でスクリプトを実行できるようにするためのコマンドを実行します
    PS C:\> Set-ExecutionPolicy RemoteSigned
  4. dxl2kapp フォルダまで移動します
  5. deploy.ps1 を以下の通り(中括弧{}の箇所は下表に基づいて要置換)実行します
    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 を以下の通り実行します
    PS C:\dxl2kapp_20170928> .\xml2csv.ps1 .\NotesData.xml
実行後に"SUCCESS!"と出力されればデータ変換は成功です!
uploadフォルダに実行日時のフォルダが生成され、その中にCSVファイルと添付ファイルがエクスポートされます。

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

  1. cli-kintone.exedxl2kapp フォルダ内に配置します
  2. 登録先kintoneアプリのアプリIDを調べます
  3. cli-kintone.exe を以下の通り(中括弧{}の箇所は下表に基づいて要置換)実行します
    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アプリにレコードが登録されていることを確認してみましょう。

変換仕様

STEP3STEP4での変換仕様は以下の通りです。

STEP3での変換仕様

項目名 使用する値
アプリ名 /database/@title
フィールドコード /database/document/item/@name
フィールド名 /database/document/item/@name
フィールドタイプ
/database/document/item/の値 使用する値
richtext リッチエディター[RICH_TEXT] + 添付ファイル[FILE]
datetime
条件 凡例 使用する値
値が"T"で始まる場合 T130000,00 日付[TIME]
上記以外で、値に"T"を含む場合 20160831T130000,00+09 日時[DATETIME]
上記2つ以外 20160831 時間[TIME]
number 数値[NUMBER]
(上記3つ以外) 文字列(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
書式 凡例
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 オプションもあわせて指定する実行方法を推奨します。
実行例: $ cli-kintone.exe --import -f importdata.csv -a 111 -d dev-demo -t xxxxx
現状は、従来の実行方法でも動作します。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

サインインしてコメントを残してください。