第 5 回 kintone コマンドラインツール(cli-kintone v0)で添付ファイル操作をしてみよう(一括ダウンロード・アップロード)

著者名: 瀧ヶ平 充 (External link)

目次

information

このチュートリアルは ver. 0.x.x の cli-kintone の使い方を紹介しています。
ver.1.0.0 以降の cli-kintone の使い方を紹介するチュートリアルは次のページを参照してください。
はじめよう cli-kintone

はじめに

今回は kintone コマンドラインツールを使った、添付ファイルのダウンロード・アップロードの方法を紹介します。

添付ファイルのダウンロード

添付ファイルは以下のコマンドでダウンロードできます。

1
cli-kintone.exe --export -a <アプリID> -d <ドメイン名> -t <APIトークン> -b <保存先ディレクトリ>

-b の保存先の指定は必須で、存在しないディレクトリー名を指定した場合は、新たにディレクトリーが作成されます。

ダウンロード先のディレクトリー構成

添付ファイルは次のようなディレクトリー構成で保存されます。

通常の添付ファイルフィールドのファイルは次のとおりです。

1
2
3
4
5
//-cオプションを指定しない、または、-cオプションを指定した状態でエクスポートするフィールドに"$id"または"レコード番号"が含まれているとき
<保存先ディレクトリ>\<添付ファイルフィールドのフィールドコード>-<レコード番号>\<添付ファイル名>

//-cオプションを指定して、エクスポートするフィールドに"$id"または"レコード番号"が含まれていないとき
<保存先ディレクトリ>\<添付ファイルフィールドのフィールドコード>-<Index(※)>\<添付ファイル名>

テーブル内の添付ファイルフィールドのファイルは次のとおりです。

1
2
3
4
5
//-cオプションを指定しない、または、-cオプションを指定した状態でエクスポートするフィールドに"$id"または"レコード番号"が含まれているとき
<保存先ディレクトリ>\<添付ファイルフィールドのフィールドコード>-<レコード番号>-<テーブルの行番号(0始まり)>\<添付ファイル名>

//-cオプションを指定して、エクスポートするフィールドに"$id"または"レコード番号"が含まれていないとき
<保存先ディレクトリ>\<添付ファイルフィールドのフィールドコード>-<Index(※)>-<テーブルの行番号(0始まり)>\<添付ファイル名>

Index はゼロから始まり、取得対象のレコード数に合わせて増加します。
例)取得対象のレコードが 3 件の場合は次のとおりです。

1
2
3
<添付ファイルのフィールドコード>-0
<添付ファイルのフィールドコード>-1
<添付ファイルのフィールドコード>-2

添付ファイルのアップロード

-b オプションを付けた場合の CSV の添付ファイルフィールドの形式

CSV を用意するために、-b オプションを付けてエクスポート結果を確認してみます。

今回は確認が目的なので、-c オプションでエクスポートするフィールドを制限してわかりやすくしましょう。

1
cli-kintone.exe --export -a <アプリID> -d <ドメイン名> -t <APIトークン> -b <保存先ディレクトリ> -c "$id,<添付ファイルフィールドのフィールドコード> > <CSVファイルの保存先>"

保存先ディレクトリーを「save」添付ファイルのフィールドコードを「Attachment」とした場合、以下のような CSV がエクスポートされます。

1
2
3
4
"$id","Attachment"
"1","Attachment-1/1-1.png
Attachment-1/1-2.png"
"2","Attachment-1/2-1.png"

この例では、ID が 1 のレコードには「1-1.png」と「1-2.png」、ID が 2 のレコードには「2-1.png」がそれぞれ登録されています。

添付ファイル部分の出力は保存場所「save」ディレクトリーからの相対パスで表され、複数件登録されている場合は改行区切りでパスが表記されます。

テーブル内の添付ファイルフィールドの場合も、各行ごとに同様の形式で得られます。

添付ファイルを含むレコードの追加

それでは、前回まで使ってきた 顧客リストアプリ (External link) に新しいレコードを登録してみましょう。

STEP1 追加レコード用の CSV ファイルを用意する

まずは添付ファイルを追加するために「logo」という名前でディレクトリーを作成し、そこにファイル「logo.png」を配置します。
ここまで完了したら次のような登録用 CSV ファイルを作成します。

1
2
"Name","Company","Attachment","Department"
"浅田俊彰","東西物流","logo.png","総務部"

複数添付ファイルを加える場合は「改行」で区切ってパスを書きます。
たとえば「logo_b.png」も合わせて追加する場合、以下のように記述します。

1
2
3
"Name","Company","Attachment","Department"
"浅田俊彰","東西物流","logo.png
logo_b.png","総務部"

これを「add_record_with_attachments.csv」として保存しましょう。

CSV 作成時のポイント

cli-kintone でエクスポートしたファイルへの追記で CSV を作成する場合、改行コードが統一されるように CSV を作成してください。
複数の添付ファイルを扱う場合、改行コードが入り混じった状態で作成された CSV はインポートに失敗することがあります。
cli-kintone は改行コードが「CRLF」という形式になるように CSV を保存しますが、コマンドプロンプトでリダイレクトしてエクスポートした場合、添付ファイル表記の改行部分だけ「LF」という形式になってしまうことがあります。

STEP2 レコードを追加する

添付ファイルと CSV の準備ができたら、次のコマンドを実行するとレコードを登録できます。

1
cli-kintone.exe --import -a <アプリID> -d <ドメイン名> -t <APIトークン> -e sjis -f add_record_with_attachments.csv -b logo

登録したレコードは以下のようになっていると思います。

前回までの記事をやってみた方は顧客リストアプリの会社名を重複禁止にしていると思うので、再度テストする場合は会社名を書き換えて行ってください。

添付ファイルを含むレコードの更新

今度はさきほど登録した添付ファイルを含むレコードを更新してみましょう。

STEP1 更新用 CSV ファイルを用意する

第 3 回 kintone コマンドラインツール(cli-kintone v0)でレコードの更新をしてみよう を参考に、更新用の CSV を用意します。

今回は添付ファイルを 1 つだけ追加してみます。

指定しなかった添付ファイルはすべて消されてしまうので、あらかじめ cli-kintone で画像を取得しておきましょう。

1
cli-kintone.exe --export -a <アプリID> -d <ドメイン名> -t <APIトークン> -b <保存先ディレクトリ>

このとき CSV も同時に保存しておくと書きやすいですね。

「customerlist」を添付ファイルの保存先に指定して実行した場合は「customerlist」ディレクトリーが作成されます。

「customerlist」ディレクトリーの中へ、レコードに登録されているロゴのファイルが保存されます。

既存の添付ファイルは「<保存先ディレクトリー>\Attachment-5」に保存されます。
そのため Attachment の項目にはこちらのディレクトリーに新たに追加する添付ファイル「Attachment-5\logo_c.png」を追加します。

その後、以下のような CSV を「update_record_with_attachments.csv」として作成します。

1
2
3
4
"$id","Attachment"
"5","<保存先ディレクトリ>\Attachment-5\logo.png
<保存先ディレクトリ>\Attachment-5\logo_b.png
<保存先ディレクトリ>\Attachment-5\logo_c.png"
STEP2 レコードを更新する

レコードに「logo_c.png」を追加したので、「<保存先ディレクトリー>\Attachment-5」に対応する「logo_c.png」を追加してからコマンドを実行します。

1
cli-kintone.exe --import -a <アプリID> -d <ドメイン名> -t <APIトークン> -e sjis -f update_record_with_attachments.csv -b <保存先ディレクトリ>

更新が成功したら以下のような状態になっているかと思います。

今回の作業ディレクトリーはこんな感じになっているかと思います。

添付ファイルの操作、いかがでしたか?
次回は実運用について触れていきます。

information

この Tips は、cli-kintone Ver 0.10.2 と 2020 年 3 月版 kintone で動作を確認しています。