モブズテック

ITの情報を発信します(*ˊᵕˋ*)ノ

【kintone】kintoneデータのバックアップ方法(500件まで/アプリ)

kintoneのデータをバックアップしたいシーンがあり、GASでスプレッドシートへ出力するコードを書きました。

出力するスプレッドシートのイメージ


[ ]の部分を変更ください。
シート名の[アプリ名]や[項目1]などの項目名が間違っているとうまく出力されませんのでご注意ください。

GAS

// kintoneのアプリのレコードをスプレッドシートへ転記する
function backupRecord() {

  // スプレッドシートの全シートの取得
  const sheets = SpreadsheetApp.openById("[スプレッドシートのID]").getSheets();

  for (const sheet of sheets) {

    // アプリ定義
    const appId = sheet.getRange(1, 5).getValue();
    const apiToken = sheet.getRange(2, 5).getValue();
    const query = sheet.getRange(3, 5).getValue();

    // バックアップ日の設定
    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, 10000, fields.length).clear();

      // レコード内容の設定
      let row = 5;
      res["records"].forEach((record) => {
        for (let j = 0; j < fields.length; j++) {
          sheet.getRange(row, j + 1).setValue(record[fields[j]].value);
        }
        row += 1;
      });

    } catch(error) {
      console.error(error.stack);
    }
  }
}

こちらはkintoneのアプリからデータを取得し、スプレッドシートへ出力するGASプログラムです。
[スプレッドシートのID]や[サブドメイン]の部分を変更ください。