レコードのデータのインポートや削除をしてみよう
はじめに
前回は、cli-kintoneを使って、レコードのデータをエクスポートする方法を学びました。
今回も引き続き、顧客リストアプリを利用してCSVでレコードを追加/更新/削除する方法を紹介していきます。
APIトークンの設定
データのエクスポート
で発行したAPIトークンの「アクセス権」設定を変更します。
今回はレコードの追加/更新/削除のため、「レコード閲覧」「レコード追加」「レコード編集」「レコード削除」にチェックを入れてください。
レコードの追加
まずは顧客リストアプリにレコードを追加してみましょう。
STEP 1. 追加するレコードのデータをCSVファイルで用意する
顧客リストアプリに追加するレコードのデータをCSVファイルで用意します。
CSVファイルを用意する際は、顧客リストアプリからエクスポートしたファイルを編集するのがおすすめです。
データのエクスポート
を参考にcli-kintoneを使ってエクスポート、もしくは、
ファイルにデータを書き出す
を参考にしてください。
1行目は列に対応するフィールドのフィールドコード、2行目以降が追加するデータとなります。
レコード追加の際、必須項目以外のフィールドのデータを入力する必要はありません。
「作成者」「作成日時」「更新者」「更新日時」は追加/更新ができないため、列を削除してください。
また、今回のデータには、後述の
レコードの更新
で更新する「部署名」フィールドを含めていません。
|
|
上記のファイルを「add_customers.csv」とし、文字コードをShift-JISにして保存します。
今回は、cli-kintoneの実行ファイルを置いたディレクトリにファイルを配置しています。
STEP 2. レコードを追加する
それではレコードを追加してみましょう。
レコードを追加する場合、record import
を指定します。
ドメイン名とアプリID、APIトークンの他に--file-path
でCSVファイルのパスを指定します。
また、データのエクスポート時と同様に--encoding
オプションでインポートするファイルの文字コードを指定できます。
今回はShift-JISのため、sjis
を指定します。
|
|
以下のようにレコードが追加されます。
レコードの更新
レコードを更新する場合も、追加時と同様にrecord import
を指定します。
また、--update-key
オプションで、更新のキーとなるフィールドのフィールドコードを指定します。
--update-key
オプションで指定できるフィールドは以下です。
- レコード番号
- 「値の重複を禁止にする」を有効にした次のフィールド
- 文字列(1行)
- 数値
--update-key
に指定したフィールドと、CSVファイル内の対応する列の値が一致するレコードは上書きされます。
一致しない場合は、新規にレコードが追加されます。
さっそく、 レコードの追加 で追加したレコード情報を更新してみましょう。
STEP 1. レコード番号
の列を含むレコードのデータをCSVファイルで用意する
id
の列を含むデータをCSVファイルで用意します。
ファイルの用意は
レコードの追加時の方法
を参考にしてください。
では、「部署名」(フィールドコード:department)の値を更新するCSVファイルを用意してみましょう。
CSVファイルで入力を省略したフィールドは更新されないため、更新したいフィールドのみファイルに入力してください。
|
|
上記のファイルを「update_customers.csv」としてShift-JISで保存します。
STEP 2. レコードを更新する
今回は、レコード番号(フィールドコード:id)を更新のキーとするため、--update-key
にid
を指定しましょう。
|
|
先ほど追加したレコードの「部署名」が更新されていることを確認しましょう。
CSVファイルに添付ファイルフィールドの列を含めてレコードを追加・更新する場合、--attachments-dir
オプションが必須です。
詳細は
添付ファイルのダウンロードとアップロード
を参照してください。
テーブルを含むレコードの追加・更新
こちらは
データのエクスポート
の交通費申請アプリを使って確認しましょう。
わかりやすくするために、下表のように一部のフィールドコードを変更しています。
「明細」はテーブルフィールドで、「日付」「訪問先」「交通手段」「金額」はテーブル内のフィールドです。
フィールド名 | フィールドコード |
---|---|
レコード番号 | id |
社員番号 | number |
所属部署 | department |
承認者 | authorizer |
タイトル | title |
明細 | detail |
日付 | date |
訪問先 | place |
交通手段 | transportation |
金額 | price |
合計金額 | sum |
備考欄 | remarks |
また、顧客リストアプリと同じく、APIトークンの「アクセス権」設定で「レコード閲覧」「レコード追加」「レコード編集」「レコード削除」にチェックを入れてください。
STEP 1. テーブルを含むレコードのデータをCSVファイルで用意する
交通費申請アプリに登録されているデータをエクスポートし、CSVファイルの中身を変更します。
今回は、更新対象をわかりやすくしたいため、--fields
オプションに以下の項目を指定してフィールドを絞り込んでエクスポートします。
- レコード番号(フィールドコード:id)
- タイトル(フィールドコード:title)
- 明細(フィールドコード:detail)
|
|
エクスポートしたCSVファイルの中身は以下になります。
前回の記事で説明したとおり、*
の行から次の*
の前の行までが1つのレコードのデータを表しています。
以下の場合、レコード番号がそれぞれ、1,2,3の3つのレコードがエクスポートされています。
|
|
今回は、次のようにCSVファイルを変更してみましょう。
- レコード番号が1のレコードについて、テーブルの最終行の金額(フィールドコード:price)を変更する。
- レコード番号が2のレコードについて、テーブルに行を追加する。
- テーブルのデータを含むレコードを新規に追加する。
CSVファイル内のid
列に値が入っていない行は新規レコードとして追加されます。
|
|
上記のファイルを「update_table.csv」として保存します。
STEP 2. テーブルを含むレコードを追加・更新
コマンドはレコードの更新時と同様に、--update-key
オプションを使用します。
|
|
各レコードのサブテーブルの更新と、レコードの追加が行われます。
更新用CSVファイル
更新されたレコード
テーブルの最終行の金額が変更されたレコード
テーブルに新規の行が追加されたレコード
追加されたレコード
既存のレコードのテーブルを更新する場合の注意点
一部の行だけを更新する場合
テーブル内に更新しない行があっても、CSVファイルにはすべての行データを記載してください。
ファイルに記載のない行はテーブルから削除されます。
一部の列(フィールド)だけを更新する場合
テーブルの一部の列だけを更新する場合でも、すべてのフィールドのデータを記載してください。
ファイルに記載されていないテーブルのフィールドは、空で更新されます。
ただし、すべての行において更新しない列がある場合には、行IDを記載することで元のデータを保持できます。
行のIDは、テーブルフィールドのフィールドコードの値として確認できます。
たとえば、次のテーブルで「price」列のデータだけを更新したいとします。
date | place | transportation | price |
---|---|---|---|
2023-08-07 | 大阪支社訪問 | 新幹線(往復) | 30000 → 40000 |
2023-08-09 | 通勤往復 | 電車(往復) | 2100 |
この場合、次のCSVファイルを作成します。
「detail」が行のIDです。
|
|
レコードの削除
最後にレコードを削除してみましょう。
レコードの削除は、削除対象を指定する方法と、すべてのレコードを一括で削除する方法の2パターンが存在します。
警告
削除したレコードは元に戻せません。
特定のレコードを削除する
まずは、特定のレコードを削除してみましょう。
特定のレコードを削除する場合は、追加/更新時と同様に削除対象を記載したCSVファイルを用意します。
STEP 1. 削除するレコードのデータをCSVファイルで用意する
顧客リストアプリから削除するレコードのデータをCSVファイルで用意します。
列にはレコード番号フィールドのフィールドコードを指定します。
|
|
CSVファイルの2行目以降は、削除するレコードのレコード番号か、
アプリコード
を設定している場合はアプリコードを含むレコード番号のどちらかを指定してください。
上記のファイルを「delete_customers.csv」として保存します。
STEP 2. レコードを削除する
削除する際は、record delete
を指定します。
record delete
を使ったレコードの削除は、APIトークン認証のみ対応しています。
追加/更新時と同様に、ドメイン名とアプリID、APIトークンを設定し、--file-path
でCSVファイルのパスを指定します。
|
|
コマンドを実行すると、削除を確認するメッセージが表示されます。
削除する場合は「y」を入力して、Enterキーを押します。キャンセルする場合は「n」を入力します。
--yes
または-y
オプションをつけてコマンドを実行すると、削除確認のメッセージが表示されずにレコードを削除できます。
|
|
すべてのレコードを削除
--file-path
オプションを省略すると、すべてのレコードを削除できます。
|
|
レコードが正しく追加・更新・削除されていない場合のデバッグ方法
インポートや削除に失敗した場合、コマンドライン上のエラーメッセージを確認することでエラー原因を確認できますが、監査ログ上でもリクエスト結果を確認できます。
監査ログは一定期間の保存が可能なため、レコードの操作結果を後から確認できます。
詳細は、「
監査ログを閲覧する
」を参照ください。
監査ログの詳細では、次のことを確認できます。
- アクション:レコードの操作の内容(追加/更新/削除)
- 結果:アクションの結果
- 補足:操作対象のアプリやレコード番号、APIトークン
これらの内容を参照して、データの内容に誤りがないかなどを確認してみてください。
おわりに
今回は、cli-kintoneを使って、レコードのデータを追加/更新/削除する方法を学びました。
次回は、 添付ファイルのダウンロードとアップロード の方法について学びましょう。
このTipsは、cli-kintone Ver 1.8.0と2023年8月版kintoneで動作を確認しています。