0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【kintone】1件のレコードの取得と値の更新-kintone Rest API(初心者/入門)

Last updated at Posted at 2024-02-23

初めに

前回はJavaScriptAPIを使っての値の取得と更新を試しました。
今回はRESTAPIで1件のレコードの取得と値の更新サンプルです。
※複数件はまた別です。

手順

  1. フィールドコードテキストという文字列を1つ設置してください
  2. 下記コードをコピペしてtest.js等適当な名前で保存し、アプリ設定でアップロード
  3. レコードを追加し、適当な文字を入れて保存
  4. レコード詳細画面で押下して値の更新。今回ABCという文字が入力され画面が更新されます。
test.js
(() => {
  'use strict';
  const fieldCode = "テキスト"
  
  // ボタン押下時に書きかえる
  const updateFunction = async () =>{
    const appId = kintone.app.getId();
    const recordId = 1;
    
    const body = {
      app:appId,
      id: recordId
    };
    const res = await kintone.api(kintone.api.url('/k/v1/record.json', true), 'GET', body);
    const record = res.record;
    //取得したデータの表示
    alert(`書きかえ前の${fieldCode}の値は${record[fieldCode].value}だよ`);
    
    
    // 更新のパラメータを宣言
    const putBody = {
                app: appId,
                id: recordId,
                record: {
                  [fieldCode]: {
                    value: 'ABC'
                  }
                }
              };

    // 非同期で更新
    await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', putBody);
    // 画面の更新
    location.reload();
  }
  
  kintone.events.on('app.record.detail.show', (event) => {

    // ボタンの設置と作成
    const button = document.createElement("button")
    button.innerText = "書き換え"
    button.addEventListener("click",updateFunction)
    
    // kintoneに表示する要素(位置)を取得して、ボタンを設置。
    const el = kintone.app.record.getHeaderMenuSpaceElement()
    el.appendChild(button)

  // 必ずeventを返してあげる
  return event
    
  });
  
})();
書き換えの様子

書き換え前

image.png

書き換え後

image.png

説明

今回はレコード詳細画面にて、レコード番号が1のレコードを取得し、レコード番号1に対して更新を行ってます。適宜変更してください。

  • 取得 => await kintone.api(kintone.api.url('/k/v1/record.json', true), 'GET', body)
    ではRESTAPIを使ってレコードを取得してます。ですが、詳細画面であればAPI数も使いもったいないので-kintone.app.record.get()で取得してあげた本来は良いです。サンプルという事で。使う場面は、別アプリのデータ取得する場合が多いのかなと思います。
  • 更新 => await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', putBody);で値を更新し、更新した後の値を確認するためにlocation.reload()で画面をリロードし直してあげてます。

async/await??

突然asyncとawaitという文字がついています。const updateFunction = async () =>{...}await kintone.api(...)の部分です。
ざっくりですが、こいつを使うことで返答があるまでお前らちょっと待ってくれやという状態になります。

非同期処理してくれるRESTAPIでデータ取得した際、通常この結果を待たずに上から下に処理が進みます。待たずに進むと期待していたrecordも取得できないまま処理が進み、値を表示しようとしてもに空の段階のものが表示されます。なので同期的に処理してねという合図としてasync/awaitを使用しています。私も最初全然わかりませんでした:relaxed:(今尚不安)

こちらも詳しくは下記にリンク張ります。言葉足らずですみません、セツメイムズカシイ。

REST APIについて、下記ドキュメントに詳しくわかりやすく記載されてます。

おわりに

今回は1件のレコードをRESTAPIで取得して更新してみました。
複数になるとbodyにrecordIdではなくqueryを使用していくようになるので、そちらもまた別に書いていきたいと思います。

楽しいkintoneライフを:blush:

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?