レコードの更新(1件)
kintone は豊富な API を提供しており、これを活用することでアプリケーションのデータをプログラムから直接操作することが可能です。
特に、REST API は HTTP リクエストを通じて kintone のデータを操作するための強力なツールです。
このページでは、kintone の REST API を使用して、特定のレコードを 1 件更新する方法について詳しく解説します。
レコードを 複数件更新する場合は、エンドポイントが異なります。詳細は以下のページを参照してください。
kintone から利用する場合
kintone の JavaScript カスタマイズとして REST API を実行する場合、用意されている JavaScript API を使用することで、簡単に REST API を実行することができます。
JavaScript API のkintone.api.url
メソッドを使用することで、実行されるスペースを意識することなく、REST API のエンドポイントを取得することができます。
/**
* kintone REST APIを使用して、アプリにレコードを更新する
*
* @param { { app: string | number; revision?: string | number; record?: Record<string, any>; } & ({ id: string | number } | { updateKey: { field: string; value: string } }) } params
* @return { Promise<{ revision: string }> } - 更新したレコードのリビジョン番号
*/
const updateRecord = (params) => {
return kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', params);
};
レコードを 複数件更新する場合は、records.json
を指定しますが、1 件だけ更新する場合は、record.json
を指定する点に注意してください。
引数には、追加先のアプリ ID と、更新を行うための対象を指定する情報、更新するレコード情報を指定します。
対象を指定する情報として、id
プロパティを指定することで、レコード ID を指定することができます。
もしくは、updateKey
プロパティに、重複禁止に設定しているフィールドコードとその値を指定することで、更新対象を指定することができます。
更新に成功した場合は、revision
プロパティを持つオブジェクトが返されます。
(() => {
const updateRecord = (params) => {
/** 省略 */
};
kintone.events.on(['app.record.detail.show'], async (event) => {
const recordId = kintone.app.record.getId();
await updateRecord({
app: kintone.app.getId(),
id: recordId,
record: {
フィールドコード: { value: '更新後の値' },
},
});
return event;
});
})();
(() => {
const updateRecord = (params) => {
/** 省略 */
};
kintone.events.on(['app.record.index.show'], async (event) => {
const recordId = prompt('更新するレコードのIDを入力してください');
await updateRecord({
app: kintone.app.getId(),
id: recordId,
record: {
フィールドコード: { value: '更新後の値' },
},
});
return event;
});
})();
kintone 以外から利用する場合
kintone の REST API は、Excel や GAS、Node.js など、様々な環境から利用することができます。
REST API を使用することで、kintone 以外の環境から kintone のデータを使用して、アプリケーションを動作させることが可能です。
kintone 以外の環境から kintone のデータを取得する場合、認証情報をリクエストに含める必要があります。
認証情報にはいくつかの種類がありますが、API トークンを選択することで、セキュリティを確保しつつ、簡単に認証情報を取得することができます。
最も簡単に使用できるのは ID とパスワードを使用した方法ですが、セキュリティ上のリスクがあるため、必要最小限の権限を付与した API トークンを使用することをおすすめします。
Node.js を使用した場合
Node.js から kintone の REST API を使用する場合、ブラウザで JavaScript を実行するのとほとんど同じコードで、HTTP リクエストを送信することができます。
/**
* kintone REST APIを使用して、アプリにレコードを更新する
*
* @param { { app: string | number; revision?: string | number; record?: Record<string, any>; } & ({ id: string | number } | { updateKey: { field: string; value: string } }) } params
* @return { Promise<{ revision: string }> } - 更新したレコードのリビジョン番号
*/
const updateRecord = (params) => {
const url = `https://__your_subdomain__.cybozu.com/k/v1/record.json`;
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'X-Cybozu-API-Token': 'YOUR_API_TOKEN',
},
body: JSON.stringify(params),
};
return fetch(url, options).then((response) => response.json());
};
__your_subdomain__
の部分と、YOUR_API_TOKEN
の部分を、それぞれご自身の環境に合わせて変更してください。
引数として設定しても良いですが、関数内で直接設定しても問題ありません。
前述した kintone から利用するコードと異なり、参照先のアプリがゲストスペースである場合は、URL を変更する必要があります。
GAS を使用した場合
Google Apps Script (GAS) から kintone の REST API を使用する場合、UrlFetchApp
クラスを使用することで、HTTP リクエストを送信することができます。
/**
* kintone REST APIを使用して、アプリにレコードを更新する
*
* @param { { app: string | number; revision?: string | number; record?: Record<string, any>; } & ({ id: string | number } | { updateKey: { field: string; value: string } }) } params
* @return { Promise<{ revision: string }> } - 更新したレコードのリビジョン番号
*/
const updateRecord = (params) => {
const url = `https://__your_subdomain__.cybozu.com/k/v1/record.json`;
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'X-Cybozu-API-Token': 'YOUR_API_TOKEN',
},
payload: JSON.stringify(params),
};
const response = UrlFetchApp.fetch(url, options);
return JSON.parse(response.getContentText());
};