3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

kintoneでUPSERTしてみる

Last updated at Posted at 2021-05-11

今回はkintone API を使ってUPSERTしてみたいと思います。
SQLでいうところの、UPSERTとは、指定のレコードがなかったらINSERT、あればUPDATEをかけるという処理です。kintoneでは、指定のレコードをGETしてみて、なかったらPOST、あればPUTという処理になります。

kintone JavaScript Client という便利なライブラリにUPSERTがありますが、今回は純粋なkintone REST APIを使ってやってみます。

アプリの準備

文字列(1行)フィールドを3つ準備します。

フィールド種類 フィールドコード 備考
文字列(1行) ID 重複を禁止
文字列(1行) 名前
文字列(1行) 好きな食べ物

JavaScript

一覧の空白部分にテキストボックス3つとボタンを1つ、
kintone UI Componentを使って設置します。
そのあたりは下記を参考にしてくださいね!

コード内の変数はこんな感じとします。

種類 変数名 内容
スペース spUpsert 一覧の上の空白スペース
Text txtId ID入力用テキストボックス
Text txtName 名前入力用
Text txtFood 好きな食べ物入力用
Button btn UPSERT走らせるボタン

ボタンクリック

ボタンクリックのイベントで非同期処理できるようにasync付けておきます。

btn.addEventListener("click", async (event) => {
  // 処理
});

入力したIDのレコードがあるかどうかGETで調べます。totalCountをtrueにしておきましょう。

// 指定のIDのレコード取得してくる
const respGet = await kintone.api(kintone.api.url("/k/v1/records", true),
  "GET",
  {
    app: kintone.app.getId(),
    query: `ID="${txtId.value}"`,
    totalCount: true,
  }
);

レコードがあったら更新、なかったら追加します。

// レコードがあったら更新(PUT),なかったら追加(POST)する
if (respGet.totalCount > 0) {
  //PUT
} else {
  //POST
}

//表示の更新
location.reload();

更新(PUT)する場合
※updateKeyには重複禁止のフィールドを指定する必要があります。

const respPut = await kintone.api(  kintone.api.url("/k/v1/record", true),
  "PUT",
  {
    app: kintone.app.getId(),
    updateKey: { field: "ID", value: txtId.value },
    record: {
      名前: { value: txtName.value },
      好きな食べ物: { value: txtFood.value },
    },
  }
);

追加する場合(POST)

const respPost = await kintone.api(  kintone.api.url("/k/v1/record", true),
  "POST",
  {
    app: kintone.app.getId(),
    record: {
      ID: { value: txtId.value },
      名前: { value: txtName.value },
      好きな食べ物: { value: txtFood.value },
    },
  }
);

GET、PUT、POSTを組み合わせてUPSERT、参考になれば嬉しいです!

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?