はじめに
kintone REST APIの新機能として、複数のレコードを更新するAPIに「UPSERT」モードが追加されました。
UPSERTとは「指定したレコードが存在する場合は更新し、存在しない場合に新規作成する処理」を1回のAPI呼び出しで実行できる機能です。
この機能により、レコードの更新処理がより効率的に行えるようになりました。
UPSERTのメリット
従来のレコード更新処理では、更新対象のレコードが存在するかどうかを確認してから、存在する場合は更新、存在しない場合に新規作成という2段階の処理が必要でした。
特にアプリの登録レコード件数が多いと、APIリクエスト数の増加や、処理時間の増加につながります。
UPSERTモードを使用することで、次の3つのメリットが得られます。
- APIリクエスト数の削減
- 処理時間の短縮
- コードの簡素化
UPSERTの使いどころ
UPSERTモードは、外部システムのデータを定期的にkintoneアプリに同期するようなケースで特に効果を発揮します。
具体的には、次の2つのケースが考えられます。
- 外部の顧客管理システムの情報をkintoneの顧客管理マスターアプリに反映する。
- 基幹システムの商品マスターをkintoneの商品マスターアプリに同期する。
実際の使い方
それでは、実際にUPSERTを使ったレコードの登録と更新をしていきます。
カスタマイズを適用するアプリ
このサンプルでは、次のフィールドをもつアプリを想定します。
フィールドの種類 | フィールド名 | フィールドコード | 備考 |
---|---|---|---|
文字列(1行) | 顧客コード | code | 「値の重複を禁止する」にチェック |
文字列(1行) | 顧客名 | name | |
数値 | 顧客年齢 | age |
また、次の値をもつレコードを作成します。
フィールド名 | 値 |
---|---|
顧客コード | CUSTOMER-001 |
顧客名 | 顧客A |
顧客年齢 | 30 |
UPSERTを使って、登録した顧客コード「CUSTOMER-001」のデータを更新し、新たに顧客コード「CUSTOMER-002」のデータを追加していきます。
サンプルコード
複数のレコードを更新するAPIを実行します。
ここでは、curlを使用した例を示します。
API_TOKEN
およびapp
の値は適宜置き換えてください。
|
|
レスポンスは以下のようになります。
|
|
サンプルコードの解説
リクエストパラメーターに"upsert": true
を指定することで、UPSERTモードで実行できます。
それ以外のパラメーターは従来どおり指定します。
なお、複数のレコードを更新するAPIにおいて、更新するレコードを指定するためのパラメーターはid
を使用する方式と、updateKey
を使用する方式があります。
今回のサンプルではupdateKey
を使用しています。
詳細は
複数のレコードを更新する | リクエスト
を参照してください。
また、レスポンスに含まれるoperation
プロパティはINSERT
またはUPDATE
の値を取ります。
この値により、レコードが更新されたか新規作成されたかを確認できます。
おわりに
UPSERTモードの導入により、kintoneアプリとの外部システム連携がより効率的になりました。
特に大量のデータを扱う場合や、定期的なデータ同期が必要な場合に、この機能を活用することで開発効率と実行効率の両方を向上させることができます。
また、コードがシンプルになることで保守性も向上し、エラーの発生リスクも低減できます。外部システムとのデータ連携を検討している場合は、ぜひUPSERTモードの使用を検討してみてください。
このTipsは、2025年3月版kintoneで動作を確認しています。