KintoneRestAPIClient upsertRecordを使ってみる

サイボウズが公開しているAPIを利用します。

APIを利用して、データ更新と挿入を行います。

事前処理

事前処理に関しては、以下のページの事前処理を参考にしてください。

KintoneRestAPIClient getAllRecordsを使ってみる

利用アプリの説明

今回のサンプルプログラムは、2つのアプリを作成していますが、アプリの項目は同じでとなっています。1つのアプリを作成し、コピーして利用頂ければ問題ありません。

・アプリ名:任意

・項目:以下の設定でプログラムを作成しています。

項目名フィールド属性フィールドコード
コード文字列(1行)コード
名前文字列(1行)名前

プログラム

(function() {
  'use strict';
  kintone.events.on('app.record.index.show', async function(event) {
    
        const client = new KintoneRestAPIClient();
        const resp  = await client.record.getAllRecords({
                    app: 17,   //ここは変更してください。
                    fields:[],
                });
           
        resp.forEach ((v) => {        
          let result =  client.record.upsertRecord({
                    app         :      kintone.app.getId(),
                    updateKey   : {  field: "コード", value: v.コード.value },
                    record      : {
                                     "名前": { value : v.名前.value + "__up" }
                                  }
          });
        });      
        return event;   
  });
})();

詳細については、以下リファレンスにて確認ください。

js-sdk/record.md at master · kintone/js-sdk · GitHub

kintoneのポイント

サンプルプログラムは、対象のアプリ(Aアプリ)からデータを取得しています。

そのデータのキーをもとに、本アプリ(Bアプリ)に処理を行っています。

同じキー(コード)が存在した場合、更新処理を、

同じキー(コード)が存在しない場合、挿入処理を行います。

upsertRecordのパラメータとして、updateKey と、recordを設定しています。

updateKey は、更新キーとして、コードを設定しています。

コード項目には、「値の重複を禁止する」チェックをONに設定している必要があります。

recordは更新データを格納しています。

配列に格納されたデータ分(オブジェクトのレコード分)データを更新しています。

async /await による非同期対応を実施いています。