第 3 回 kintone コマンドラインツール(cli-kintone v0)でレコードの更新をしてみよう

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

目次

information

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

はじめに

第1回と第2回でcli-kintoneのレコードの取得と追加、削除について学びました。

それでは、今回も引き続き 顧客リストアプリ (External link) を使ってcli-kintoneによるレコードの更新をやっていきます。
CSV作成の際のフィールドコードはご自身の環境のものに合わせてください。

レコード ID を指定してレコードを更新する

STEP1 「$id」のカラムを含むレコードの CSV データを用意する

今回は前回追加した顧客3人のレコードに部門情報を加えてみましょう。
レコードを更新するには$idのカラムを含むCSVを用意します。
レコードをcli-kintoneで取得し、そのCSVを編集する形で行うのがよいかと思います。
レコードのCSVファイルへのエクスポート方法は 第 1 回 kintone コマンドラインツール(cli-kintone v0)を使ってみよう!を参照してください。

省略されたフィールドは変更されないので、CSVの入力は更新したいフィールドのみでOKです。

次はidが"4","5","6"の場合のcsvファイルです。

1
2
3
4
"$id","Name","Company","Department"
"6","友岡 春樹","青木建設","経理部"
"5","中田 助勝","赤松機械","開発部"
"4","品川 吉織","朝日商事","営業部"

こちらをupdate_customers.csvとしてShift-JISで保存します。

STEP2 レコードを更新する

追加時と同様のコマンドを実行するとレコードを更新できます。

Shift-JISで保存したため、-eオプションを使って、-e sjisを指定しましょう。

  • 実行ファイルと同じ場所にupdate_customers.csvを保存した場合

    1
    
    >cli-kintone.exe --import -a <アプリID> -d <ドメイン名> -t <APIトークン> -e sjis -f update_customers.csv
  • update_customers.csvのファイルパスを指定する場合

    1
    
    >cli-kintone.exe --import -a <アプリID> -d <ドメイン名> -t <APIトークン> -e sjis -f c:\Users\Desktop\update_customers.csv

キーとなるフィールドを指定してレコードを更新する

STEP1 キーとなるフィールドを重複禁止の設定にする

cli-kintoneでは、重複禁止のフィールドを指定してレコードを更新できます。

今回はアプリの設定を変更して、「会社名」のフィールド(フィールドコードでは「Company」)を重複禁止に変更します。

STEP2 キーとなるフィールドコードの先頭に * をつけた CSV を作成する

フィールドを重複禁止にしたら、次はCSVを作成します。
キーとなるフィールドの先頭に*をつけると、そのフィールドの値に一致するレコードが更新されます。
今回は「Company」を重複禁止にしたので、CSVの一行目に*Companyを含むレコードデータを作成します。
先ほど部門情報を加えた3つのレコードに対し、名前を変更して電話番号を追加するCSVが以下になります。

1
2
3
4
"Name","*Company","TEL"
"友田 春樹","青木建設","4121211"
"中島 助勝","赤松機械","2203315"
"品野 吉織","朝日商事","5551111"

これをupdate_customers_by_company.csvとしてShift-JISで保存します。

STEP3 レコードを更新する

キーとなるフィールドを指定する場合も、追加・更新と同様のコマンドを実行します。

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

レコードの更新と追加を同時に行う

STEP1 CSV ファイルを用意する

レコードの更新と追加を同時に行う場合、CSVでレコードIDを指定する必要があります。
CSVファイルの書き方は以下のような形になります。

追加するレコード

$idのカラムを""にして、その他の項目を入力します。

このとき、必須項目は値を必ず入力する必要があります。

更新するレコード

通常の$idのカラムに対応する数値を入れ、その他の更新したい項目を入力します。
このとき、フィールドの値を変更したくない場合は元の値を、そうでない場合は新しい値を入力してください。
以上を踏まえてレコードデータを書くと、次のようになります。

1
2
3
4
5
"$id","Name","Company","Department","Zipcode"
"","西森 壮太","青山運送","総務部","1367983"
"6","友岡 春樹","青木建設","経理部","1235678"
"5","中田 助勝","赤松機械","開発部","6351678"
"4","品川 吉織","朝日商事","営業部","1371475"

こちらはupdate_and_post_customers_by_company.csvとしてShift-JISで保存します。

STEP2 レコードを更新・追加する

こちらの場合も、追加・更新と同様のコマンドを実行します。

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

レコードを削除したあとで更新する

STEP1 CSV ファイルを用意する

レコード追加時と同様に、更新時も実行前にレコードを削除できます。
IDまたはフィールドのどちらを指定する場合でもよいので、レコード更新時に利用するCSVをそのまま利用すれば大丈夫です。
今回は、最初のupdate_customers.csvを用いて更新処理をしてみましょう。

STEP2 レコードを削除・更新する

追加時と同様に、-Dおよび-fオプションを指定すると削除後の更新が可能です。
このとき、更新するレコードが削除対象に含まれないように、-qオプションでクエリを指定する必要があります。
今回update_customers.csvはレコードIDが4,5,6のものを更新するので、これらを含まない最新2件のレコードを削除してから更新してみましょう。

1
>cli-kintone.exe --import -a <アプリID> -d <ドメイン名> -t <APIトークン> -D -q "$id not in (\"4\", \"5\", \"6\") limit 2 offset 0" -e sjis -f update_customers.csv

また、IDを指定する場合は追加するレコードをCSVに記述すれば、削除後に追加・更新を同時に行うことも可能です。

テーブルを含むレコードの ID を指定して更新する

テーブルの表現を使って更新用CSVを作成すると、テーブルを含むレコードも同様に更新できます。
今回も前回と同じく、 交通費申請アプリ (External link) を使って確認しましょう。

STEP1 $idとテーブルを含むレコード更新用 CSV ファイルを作成する

前回または前々回で扱ったテーブルの表記方法は、フィールドコードの行と各レコード1行目の最初に*,を追加していました。
今回も同様に更新用のCSVを作っていきます。
IDを指定するので、$idカラムを追加します。
以下は、レコードIDが1,2,3の場合の例です。
前回追加したレコードの「金額」フィールド(フィールドコードは「Price」)の内容を変更しています。

1
2
3
4
5
6
7
8
9
*,"$id","Title","Other","Date","Place","transportation","Price"
*,"3","3月分交通費","テスト","2017-01-24","","","3000"
*,"2","2月分交通費","テスト","2017-02-08","サイーボ株式会社","電車(往復)","2000"
,"2","2月分交通費","テスト","2017-02-24","株式会社ボーサイ","バス(往復)","2000"
,"2","2月分交通費","テスト","2017-02-27","サイボウズ株式会社","電車(往復)","2000"
*,"1","1月分交通費","テスト","2017-01-18","プププ株式会社","電車(往復)","1000"
,"1","1月分交通費","テスト","2017-01-25","AAA株式会社","飛行機(往復)","1000"
,"1","1月分交通費","テスト","2017-01-30","ららら株式会社","電車(往復)","1000"
,"1","1月分交通費","テスト","2017-01-31","株式会社オー","タクシー","1000"

これをupdate_subtable.csvとしてShift-JISで保存します。

STEP2 レコードを更新する

通常のレコード更新と同様のコマンドで、テーブルを含むレコードも更新できます。

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

キーとなるフィールドコードを指定して、テーブルを含むレコードを更新する

STEP1 キーとなるフィールドを重複禁止の設定にする

テーブルを含む場合も、重複禁止のフィールドを指定してレコードを更新できます。

こちらでは「タイトル」のフィールド(フィールドコードでは「Title」)を重複禁止にします。

STEP2 キーとなるフィールドコードの先頭に * をつけた CSV を作成する

次はCSVを作成します。
キーとなるフィールドの先頭に*を付けると、そのフィールドをキーとしてレコードを更新できます。
先ほどと同じですね。
CSV一行目に*Titleを含むレコードデータを作成します。
今度は各レコードに一行ずつ追加してみましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
*,"*Title","Other","Date","Place","transportation","Price"
*,"3月分交通費","空データ","2017-01-24","","",""
,"3月分交通費","空データ","2017-01-24","","",""
*,"2月分交通費","AAA","2017-02-08","サイーボ株式会社","電車(往復)","400"
,"2月分交通費","AAA","2017-02-24","株式会社ボーサイ","バス(往復)","600"
,"2月分交通費","AAA","2017-02-27","サイボウズ株式会社","電車(往復)","400"
,"2月分交通費","AAA","2017-02-28","株式会社CY","バス(往復)","600"
*,"1月分交通費","BBB","2017-01-18","プププ株式会社","電車(往復)","400"
,"1月分交通費","BBB","2017-01-25","AAA株式会社","飛行機(往復)","30000"
,"1月分交通費","BBB","2017-01-30","ららら株式会社","電車(往復)","800"
,"1月分交通費","BBB","2017-01-31","株式会社オー","タクシー","1500"
,"1月分交通費","BBB","2017-01-31","株式会社ビー","電車(往復)","1500"

これをupdate_subtable_by_title.csvとしてShift-JISで保存します。

STEP3 レコードを更新する

キーとなるフィールドを指定する場合も、通常の追加・更新と同様のコマンドを実行します。

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

まとめ

いかがでしたでしょうか。
第3回まででレコードの取得・追加・更新・削除など基本的なことをやってきました。
そろそろcli-kintoneにも慣れてきたかと思います。
次回はクエリを使ったレコードの絞り込み、並び順の変更をやっていきたいと思います。

information

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