第 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 で動作を確認しています。