別ドメインの kintone のレコードを取得(kintone JavaScript API)
はじめに
kintone.proxy() を利用して別ドメインの kintone のレコードを取得するコードのメモです。
GET の場合は encodeURIComponent() が必要だったり、fields の指定が面倒なので POST(X-HTTP-Method-Override)を利用するのが楽です。リンク先に「kintone.proxy() については動作保証外」とありますがリクエスト先が kintone であれば動作するようです。
GET の場合
kintone.events.on(["app.record.detail.show"], async (event) => { const domain = "xxx.cybozu.com"; const app = "xxx"; const headers = { "X-Cybozu-API-Token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", }; const query = encodeURIComponent('会社名 = "金都運総研"'); const url = `https://${domain}/k/v1/records.json`; const queryString = `?app=${app}&query=${query}&fields[0]=$id&fields[1]=$revision&fields[2]=会社名&totalCount=true`; const res = await kintone.proxy(`${url}${queryString}`, "GET", headers, {}); const { records, totalCount, message } = JSON.parse(res[0]); if (res[1] === 200) { console.log(records); console.log(totalCount); } else { console.log(message); } return event;});
POSTの場合
X-HTTP-Method-Override を利用します。
kintone.events.on(["app.record.detail.show"], async (event) => { const domain = "xxx.cybozu.com"; const app = "xxx"; const headers = { "X-Cybozu-API-Token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "Content-Type": "application/json", "X-HTTP-Method-Override": "GET", }; const data = { app, query: '会社名 = "金都運総研"', fields: ["$id", "$revision", "会社名"], totalCount: true, }; const url = `https://${domain}/k/v1/records.json`; const res = await kintone.proxy(url, "POST", headers, data); const { records, totalCount, message } = JSON.parse(res[0]); if (res[1] === 200) { console.log(records); console.log(totalCount); } else { console.log(message); } return event;});