Kintone APIを使って、アプリ内のレコード情報をGoogle Apps Script(GAS)で連携させてスプレッドシートに書き出す方法を紹介します。
私の会社ではKitoneを運用しています。
ここで作成したデータをスプレッドシートに書き込んでお見積書やら発注書を出す必要があるのですが・・・・・・
Kintoneから「データをダウンロード」とか「コピー&ペースト」してなどなど・・・・・・
面倒だなあと思ったので、GASを使って自動書き出しが出来るようにしました。
この方法を利用すれば、Kintoneのデータを1クリックでスプレッドシートに書き出すことが可能です。
GASにはタイマー機能があるので、指定した時刻になったらデータを自動で取得する・・・・・・
なんてこともできます。
GASコードの紹介から、Kintone APIを使った連携方法まで丁寧に解説したいと思います。
それではさっそく参りましょう。
- KintoneのデータのAPI発行方法
- GASを使ってレコードデータをスプレッドシートに記載する方法
Kintoneアプリの準備
Kintoneアプリの作成
まず、Kintoneでアプリを作成しましょう。
フィールドを設定することで、必要なデータ構造を構築します。
ここでは例として、顧客管理アプリを作成します。

アプリが完成したら、テストデータをいくつか登録しておきましょう。

Kintone APIトークンの生成
KintoneのAPIトークンは、GASからKintoneのデータにアクセスするための鍵です。
Kintoneの設定画面からAPIトークンを生成し、記録しておきます。
手順も乗せておきますが、公式サイトも参考にしてください。
アプリ設定から
『設定』タブ → 『APIトークン』をクリック

『生成する』をクリック

APIトークンが生成されたら、アクセス権を編集して保存します。
このとき、生成されたAPIトークンをメモ(コピペ)しておきます。

最後にアプリの更新、もしくは保存します。

以上でKintone側の設定は完了です。
このトークンをGASのコード内で使用して、Kintoneのデータにアクセスします。
Kintoneアプリ番号を確認する
Kintoneには作成したアプリごとに自動で番号が振られます。
URLを見ればアプリ番号がわかるので、控えておきましょう。
下の写真の例でいうと、『93』がアプリ番号です。

Kintoneの独自URLを確認する
数字部分と同様、Kintoneアカウントを作成したときの独自URLも使用します。
コピペしておきましょう。

以上でKintone側の準備は完了です。
Googleスプレッドシートの準備
データを書き込むスプレッドシートを準備します。
スプレッドシートを作成
新しいシートを作成します。
このときに書き出すシートの名称も変更しておくと便利です。
今回は「Kintoneデータ」とさせていただきます。

GASを登録
最重要項目のGASコードです。
GASのスクリプトエディタからスプレッドシートを指定し、スクリプトを記述します。
スクリプトは以下の通りです。
function getRecordsAndWriteToSheet() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
//以下を書き換える↓↓
const appId = 93; //アプリ番号
const apiToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; //APIトークン
const kintoneURL = 'https://yourcompany.cybozu.com/k/'; //Kintone URL
//ここまでを書き換える↑↑
const params = {
"app": appId
};
const queryString = Object.keys(params).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join('&');
const url = `${kintoneURL}v1/records.json?${queryString}`; //Kintone URL
const options = {
"method": 'GET',
"headers": {
"X-Cybozu-API-Token": apiToken
},
"muteHttpExceptions": true
};
try {
var response = UrlFetchApp.fetch(url, options);
var responseCode = response.getResponseCode();
var responseBody = response.getContentText();
if (responseCode >= 200 && responseCode < 300) {
// レスポンスボディをJSONオブジェクトに変換
var data = JSON.parse(responseBody);
if (data.records && data.records.length > 0) {
// スプレッドシートに書き込む
writeToSheet(data.records);
} else {
Logger.log("No records found."); //データがなければないとログを出す
//Browser.msgBox("レコードがありませんでした。");
}
} else {
Logger.log(`Error: ${responseCode}, Body: ${responseBody}`); //データ取得に失敗したらエラーを吐き出す。
Browser.msgBox(`Error: ${responseCode}, Body: ${responseBody}`)
}
} catch (error) {
Logger.log(`Exception caught: ${error.toString()}`);
}
}
function writeToSheet(records) {
//フィールド名も取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('Kintoneデータ');
// 既存のデータをクリアする場合(オプション)
sheet.clearContents();
// ヘッダーを設定する場合(レコードの最初のキーから取得)
const headers = Object.keys(records[0]);
sheet.appendRow(headers);
// レコードをスプレッドシートに書き込む
records.forEach(record => {
const row = headers.map(header => {
// フィールドがオブジェクトであり、valueプロパティを持つ場合はその値を使用
if (record[header] && typeof record[header] === 'object' && 'value' in record[header]) {
return record[header].value;
}
// そうでない場合は、フィールドの値をそのまま使用(または空文字列)
return record[header] || '';
});
sheet.appendRow(row);
});
}
コードを書き換える
Kintoneアプリで確認した以下の3つをGASコードに書き加えます。
//以下を書き換える↓↓
const appId = 93; //アプリ番号
const apiToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; //APIトークン
const kintoneURL = 'https://yourcompany.cybozu.com/k/'; //Kintone URL
//ここまでを書き換える↑↑
書き換えが完了し、GASの承認をすれば準備完了です。
GASを実行する
書き換えが完了したら、「getRecordsAndWriteToSheet」を実行してください。

無事に書き出せていれば終了です。

Kintone APIを使う際の注意点
Kintone APIを使う際の注意点です。
フィールド名とフィールドコードをあわせる
このGAS出力は『フィールドコード』で出されます。
フィールド名とフィールドコードが同じ名前になるようにしておきましょう。

出力されるのはフィールドの追加順
このコードだと、出力されるデータはフィールドの更新が新しいものとなります。
並び替えたいのであれば、GASコードを追加する必要があるので注意してください。

日付や数字の扱いは注意
日付や電話番号の数字はそのままだと扱いづらいデータで出てきます。
GASのformatDateやformatString関数を使って文字列の変換を行ってください。

テーブルデータの取得はできない
今回ご紹介したコードだと、テーブルデータの取得はできません。
Kintone一覧で表示される1行のレコードデータだけが対象となります。
入れ子構造になっているので、取り出すために工夫が必要です。

まとめ
GASとKintone APIを連携して、レコード情報をスプレッドシートに書き出す方法について解説しました。
この記事で紹介した方法を使えば、Kintoneのデータをダウンロードしたりコピペする手間が省けます。
また、GASのタイマー機能を使えば指定した時間にKintoneのデータを取得することも可能です。
効率的なデータ管理で、作業時間の短縮になれば嬉しいです。
以上、ごすけでした。
スプシのカスタマイズ承ります
職場で使用している形式にスプレッドシート×GASをカスタマイズすることも可能です。
ご希望の方は『お問い合わせページ』よりご連絡ください。