【kintone】アプリに登録したレコードをスプレッドシートに転記してバックアップしてみた
スプレッドシート
5行目以降にkintoneアプリのレコードをGASで転記する。
GAS
// kintoneのアプリのレコードをスプレッドシートへバックアップする function backupRecord() { // スプレッドシートの全シートの取得 const sheets = SpreadsheetApp.openById([スプレッドシートのID]).getSheets();、 // ▲https://docs.google.com/spreadsheets/d/[ここの部分]/edit#gid=0 for (const sheet of sheets) { // アプリ定義 // ▼アプリIDなどのアプリによって変わる値は、スプレッドシートに書いておく const appId = sheet.getRange(1, 5).getValue(); const apiToken = sheet.getRange(2, 5).getValue(); const query = sheet.getRange(3, 5).getValue(); // ▲例:"Where ~~ Order by ~~" // バックアップ日の設定 sheet.getRange(1, 2).setValue(Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy年MM月dd日 HH:mm:ss')); // ▲スプレッドシートにバックアップ日を設定しておくと、いつバックアップしたものか分かる // 項目名の取得 let fields = []; let col = 1; while (sheet.getRange(4, col).getValue()) { // ▲スプレッドシートのフィールド名をアプリのフィールド名と同じにしておく fields.push(sheet.getRange(4, col).getValue()); col += 1; } // APIパラメータの設定 const url = "https://[サブドメイン].cybozu.com/k/v1/records.json" + "?app=" + appId + "&fields=" + encodeURIComponent(fields.join(",")) + // ▲配列で格納したフィールド名を文字列としてカンマ区切りで結合して設定 "&query=" + encodeURIComponent(query); try { // APIの実行 let res = JSON.parse(UrlFetchApp.fetch(url, {"method": "GET","headers": {"X-Cybozu-API-Token": apiToken}})); // シートを一度クリア sheet.getRange(5, 1, 1000, fields.length); // ▲仮で300行(レコード)分、クリアしている(レコードが多いアプリがある場合はもっと大きい値にする) // レコード内容の設定 let row = 5; res["records"].forEach((record) => { for (let j = 0; j < fields.length; j++) { // ▲スプレッドシートに記載したフィールド数分繰り返して、kintoneの値をスプレッドシートにコピーする sheet.getRange(row, j + 1).setValue(record[fields[j]].value); } row += 1; }); } catch(error) { console.error(error.stack); } } }