添付ファイルのダウンロードとアップロード

目次

はじめに

前回までに、cli-kintone を使ったデータの入出力の方法について説明しました。
今回は、添付ファイルのダウンロードとアップロードをする方法を学んでいきましょう。

データのエクスポート で準備した、顧客リストアプリのレコードを使用していきます。
前回の記事でレコードを削除している場合は、サンプルデータを再度追加してください。

あらかじめ、API トークンに「レコード閲覧」「レコード追加」「レコード編集」のアクセス権がついていることを確認してください。

添付ファイルをダウンロードする

顧客リストアプリで準備したデータを使って、レコードの添付ファイルをダウンロードしてみましょう。

レコードに添付されたファイルをダウンロードするには、データのエクスポートをする場合と同じで record export を指定します。
さらに --attachments-dir オプションで、ダウンロード先のディレクトリー名を指定します。
指定するパスは、実行している場所からの相対パスになります。
ダウンロード先のディレクトリー名を「download」とした場合は、次のように書きます。

1
cli-kintone.exe record export --app 299 --base-url https://sample.cybozu.com --api-token APIトークン --encoding sjis --attachments-dir ./download

実行すると、「download」ディレクトリー内に「フィールドコード - レコード番号」という名前のディレクトリーが作成され、その中に添付ファイルがダウンロードされます。

1
2
3
4
5
# レコード番号が 21 番目の場合
works # cli-kintone.exe があるディレクトリー
└─── download
    └── company_logo-21  # 「フィールドコード-レコード番号」の名前で作成されたディレクトリー
          └── img_01.png # ダウンロードした添付ファイル

テーブル内の添付ファイルをダウンロードする場合

テーブル内の添付ファイルをダウンロードする場合、「フィールドコード - レコード番号 - テーブルの行番号」という名前のディレクトリー内に添付ファイルがダウンロードされます。
テーブルの行番号は、1 行目が 0 で、2 行目は 1 となります。
このように、行番号は 0 から始まる数字で発番されます。

以下は添付ファイルのフィールドコードを table_logo に設定した場合の、ディレクトリー構成の例になります。

1
2
3
4
5
6
7
# レコード番号が 21 番目の場合
works # cli-kintone.exe があるディレクトリー
└─── download
    └── table_logo-21-0  # 「フィールドコード-レコード番号-テーブルの行番号(0 始まり)」の名前で作成されたディレクトリー
          └── img_01.png # ダウンロードした添付ファイル
    └── table_logo-21-1
          └── img_02.png

添付ファイルをアップロードする

添付ファイルのあるレコードを追加する

次に、添付ファイルが複数あるレコードを新規に追加してみましょう。

  1. 添付ファイルを配置します。

    「upload」という名前のディレクトリーを作成し、2 つの添付ファイルを配置します。

    1
    2
    3
    4
    
    works # cli-kintone.exe があるディレクトリー
    └── upload
      ├── img_01.png
      └── img_02.png # 複数のファイルを指定する場合は同じ階層に配置
  2. CSV にファイル名を記載します。

    添付ファイルフィールドの値に、ファイル名を記載します。

    1
    2
    
    "company","company_logo"
    "サイボウズ株式会社","img_01.png"

    今回の例では、1 つのフィールドに 2 つのファイルを追加します。
    複数のファイルを追加する場合は、ファイル名を改行区切りで記載します。

    1
    2
    3
    
    "company","company_logo"
    "サイボウズ株式会社","img_01.png
    img_02.png"
  3. コマンドを実行します。

    添付ファイルをアップロードするには、データのインポートをする場合と同じで record import を指定します。
    さらに --attachments-dir オプションで、アップロードするファイルを配置したディレクトリーを指定します。
    指定するパスは、実行している場所からの相対パスになります。

    今回の例では、次のように書きます。

    1
    
    cli-kintone.exe record import --app 299 --base-url https://sample.cybozu.com --api-token APIトークン --encoding sjis --file-path ./sample.csv --attachments-dir ./upload

    正常に実行されると、追加されたレコードの件数が表示されます。

    1
    2
    
    [2023-08-09T06:20:31.585Z] INFO: Starting to import records...
    [2023-08-09T06:20:32.136Z] INFO: Imported 1 records successfully
  4. アプリで画面の確認をしてみましょう。

    1. 新規に追加したレコードの詳細画面を開きます。
    2. 2 つの添付ファイルが登録された、新規のレコードを確認できます。

添付済みのファイルを更新する

先ほど追加したレコードの「img_02.png」を「img_03.png」に更新してみましょう。

  1. 添付ファイルを配置します。

    作成済みの「upload」ディレクトリーの中に、更新用の添付ファイルを配置します。

    1
    2
    3
    4
    5
    
    works # cli-kintone.exe があるディレクトリー
    └── upload
      ├── img_01.png
      ├── img_02.png
      └── img_03.png # 更新用の添付ファイル
  2. CSV にファイル名を記載します。

    レコードを更新する場合は、更新のキーとなるフィールドのフィールドコードを指定する必要があります。今回の例では、レコード番号をキーに指定します。
    添付ファイルフィールドの値には、更新したいファイル名「img_03.png」を記載します。
    また、更新対象ではないファイル名「img_01.png」も記載する必要があります。

    1
    2
    3
    
    "id","company","company_logo"
    "22","サイボウズ株式会社","img_01.png
    img_03.png"
  3. コマンドを実行します。

    コマンドは、添付ファイルのあるレコードを追加する場合と同じですが、--update-key オプションで、更新のキーとなるフィールドのフィールドコードを指定する必要があります。

    1
    
    cli-kintone.exe record import --app 299 --base-url https://sample.cybozu.com --api-token APIトークン --encoding sjis --file-path ./sample.csv --update-key "id" --attachments-dir ./upload

    正常に実行されると、更新されたレコードの件数が表示されます。

    1
    2
    3
    
    [2023-08-09T07:10:50.026Z] INFO: Preparing to import records...
    [2023-08-09T07:10:50.163Z] INFO: Starting to import records...
    [2023-08-09T07:10:50.641Z] INFO: Imported 1 records successfully
  4. アプリで画面の確認をしてみましょう。

    1. 添付ファイルを更新したレコードの詳細画面を開きます。
    2. 2 番目の添付ファイルが更新されていることを確認できます。

添付済みのファイルを削除する

最後に、レコードの添付ファイルを削除してみましょう。

  1. CSV にファイル名を記載します。

    添付ファイルをすべて削除する場合は、添付ファイルフィールドの値に空文字を指定します。

    1
    2
    
    "id","company","company_logo"
    "22","サイボウズ株式会社",""
  2. コマンドを実行します。

    コマンドは更新時と同じで、次のように書きます。

    1
    
    cli-kintone.exe record import --app 299 --base-url https://sample.cybozu.com --api-token APIトークン --encoding sjis --file-path ./sample.csv --update-key "id" --attachments-dir ./upload

    正常に実行されると、更新されたレコードの件数が表示されます。

    1
    2
    3
    
    [2023-08-09T07:28:25.528Z] INFO: Preparing to import records...
    [2023-08-09T07:28:25.695Z] INFO: Starting to import records...
    [2023-08-09T07:28:25.848Z] INFO: Imported 1 records successfully
    information

    添付ファイルをすべて削除する場合でも、--attachments-dir を指定してください。フォルダーの中身は空でも問題ありません。

  3. アプリで画面の確認をしてみましょう。

    1. 添付ファイルを削除したレコードの詳細画面を開きます。
    2. 指定したレコードの添付ファイルが削除されていることを確認できます。

おわりに

今回は、cli-kintone を使って、添付ファイルのダウンロードとアップロードをする方法を学びました。

次回は、 データのバックアップ の方法について学びましょう。

information

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