Skip to content

別ドメインの 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;
});