kintoneからスプレッドシートへデータ抽出

実現したいこと

・kintoneからスプレッドシートへ出力をしたい。
・実行するごとに最新のデータに上書きしたい。

試したこと

function getRecords() {

  const subdomain = "●●●"

  var urlGetRecords = "https://" + subdomain + ".cybozu.com/k/v1/records.json";

  var appId =103;

  var apiToken ='××××××××××××××××××××××××';




  // kintoneからデータを取得

  var paramFields = "&fields=$id," + encodeURIComponent("受付日,締切日,最終架電,架電回数,最終結果,_5回完了未完了");

  var paramQuery = "&query="

           + encodeURIComponent("order by $id asc limit 500");

  var url = urlGetRecords + "?app=" + appId + paramFields + paramQuery;

  var res = JSON.parse(UrlFetchApp.fetch(url,{"method":"get","headers":{"X-Cybozu-API-Token":apiToken}}));




  // 取得したデータを整形

  var output = [];

  res["records"].forEach(function(record){

    var row = [];

    row.push(record["受付日"].value);

    row.push(record["締切日"].value);

    row.push(record["最終架電"].value);

    row.push(record["架電回数"].value);

    row.push(record["最終結果"].value);

    row.push(record["_5回完了未完了"].value);

    output.push(row);

  });




  // スプレッドシートに出力

  var sheetOutput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ取得');

  sheetOutput.getRange(2, 1, output.length, output[0].length).setValues(output);

}

上記limit500で500件抽出出来ました。

いろいろと検索してoffsetというものを入れて、ループをすると、500件ずつ抽出出来るということはわかったのですが、初心者故ネットから引っ張って項目名が合うようにするくらいしか出来ず、どこにどうつなげたら良いか分からず。。。

レコード件数は日々増えていく予定です。
現在で約700件あります。

出来る限り多く抽出出来るようにしたいです。

ご教授よろしくお願いします。

良いところまでできていると思います。
offsetは「どれだけのレコードをスキップしてレコードの取得を始めるか」の指定で、通常limit 500で500件のレコードを取得すると1件目~500件目のレコードが取得されるのに対し、「limit 500 offset 500」とすると501件目~1000件目のレコードが取得でき、次に「limit 500 offset 1000」で1001件目~1500件目…と取得されます。

そのため、offsetを変数(書き換えられる値)にし、取得したレコードを溜め込んでおくもの(配列)を作った上で
① レコードを500件取得
② レコード溜め込んでおくものに取得したレコードを結合(1回目の実行時に500件分、2回目の実行時に500+500=1000件分)
③ ②の溜め込んでいる数をoffsetに書き換え(1回目の実行時にoffset 500、2回目の実行時にoffset 1000)

という①~③の動作を「limit(500)が、①の時に取得できたレコード数を下回るまで実行(700件のレコードを取得する場合、1回目のレコード取得で500件取得され500を下回らないため続行、2回目のレコードで200件取得され、この時点で500を下回るため終了)」することで、全件のレコードを取得できます。

この動作をレコード一括取得のJavaScriptコーディング例の方法3:offsetを利用する方法で記載されています。

mls-hashimoto様、

細かくご教授ありがとうございます!!

頂いたページを元にいろいろ挑戦してみます!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。