📄
google app script から kintone のレコードを抽出
kintoneのデータを1件取得するスクリプトです。
はじめに
以下の環境で動作しています。
- google app script … Chrome V8ランタイム利用
- kintone … クラウド最新版(2025年1月時点)
用意するもの
google app script → プロジェクトの設定 → スクリプトプロパティ に、以下3つのプロパティを作成します。
それぞれ取得元のアプリにあわせてください。
プロパティ名 | 値(例) | 備考 |
---|---|---|
subdomain | myDomain | アドレス欄https://domainName.cybozu.com にあるdomainName 部分 |
appId | 123 | 取得対象のアプリID |
appToken | ABCDEFG1234567 | 取得対象アプリで作成したAPIトークン。 「レコード閲覧」の権限が必要。 |
スクリプト
getRecord.gs
/**
* サンプルスクリプト
*/
function sampleScript() {
// 任意のレコード番号を指定する
const getRecord = getRecord(1)
Logger.log(getRecord)
}
/**
* スクリプトプロパティに設定したアプリからレコードを1件取得
*/
function getRecord(recordId) {
const subDomain = scriptProperties.getProperty('subdomain')
const appId = Number(scriptProperties.getProperty('appId'))
const appToken = scriptProperties.getProperty('appToken')
const url = `https://${subDomain}.cybozu.com/k/v1/record.json?app=${appId}&id=${recordId}`;
const options = {
method: 'GET',
headers: {
'X-Cybozu-API-Token': appToken,
},
muteHttpExceptions: true,
};
try {
const resp = UrlFetchApp.fetch(url, options);
if (resp.getResponseCode()!==200) {
throw new Error(`レコード取得エラー:\n HTTPステータス:${resp.getResponseCode()}\n レスポンス :${resp.toString()}`);
}
return JSON.parse(resp.getContentText()).record;
} catch (error) {
throw new Error(error.message);
}
}
説明
スクリプトプロパティから秘匿した設定を取得
part of getRecord.gs
const subDomain = scriptProperties.getProperty('subdomain')
const appId = Number(scriptProperties.getProperty('appId'))
const appToken = scriptProperties.getProperty('appToken')
コピペしづらい&セキュリティ上よろしくないので各設定値はハードコーディングせず、スクリプトプロパティに格納しておき、その内容を取得します。
これで、getRecord()
を別のGASスクリプトから利用したいとなった場合も安全に処理できます。
パラメータ・リクエストヘッダの作成
part of getRecord.gs
const url = `https://${subDomain}.cybozu.com/k/v1/record.json?app=${appId}&id=${recordId}`;
const options = {
method: 'GET',
headers: {
'X-Cybozu-API-Token': appToken,
},
muteHttpExceptions: true,
};
上で取得したスクリプトプロパティをパラメータとリクエストヘッダに設定します。
設定方法は下のページを参考にしました。
様々シチュエーションに応じたパラメータの設定方法が記載されていますが、今回のスクリプトではAPIトークンを利用する方式です。
APIトークン以外の認証方式を利用する場合は、以下ページに認証方式の一覧があるので参考にしてください。
APIトークン以外の認証方式を利用する場合は、以下ページに認証方式の一覧があるので参考にしてください。
リクエストする
part of getRecord.gs
try {
const resp = UrlFetchApp.fetch(url, options);
if (resp.getResponseCode()!==200) {
throw new Error(`レコード取得エラー:\n HTTPステータス:${resp.getResponseCode()}\n レスポンス :${resp.toString()}`);
}
return JSON.parse(resp.getContentText()).record;
} catch (error) {
throw new Error(error.message);
}
GASスクリプト標準のHTTPリクエストUrlFetchApp.fetch
を使って外部(kintone)にHTTPリクエストします。
レスポンスコードが200以外はエラーになるので、その場合にはエラーを'throw'するようにしています。
Discussion