前提
https://www.shanaidx.com/kintone_data_get/
を参考に、kintoneアプリからGASでレコード情報を取得、
取得したデータをスプレッドシートに出力したいと思っています。
解決策をご存じの方がいらっしゃいましたらご教授お願いします。
問題点
レコード情報を取得→取得したデータをスプレッドシートに出力までは上手くいったが、500件以上のデータが書き込めず困っています(※元のアプリのデータは5000件あります)
コードの位置を変えてみたりしたがなかなかうまくいかないので、500件以上アプリのデータがある場合のスプレッドシートの出力方法を、もしくはヒントを教えてほしいです。
ソースコード
const api_url = 'https://xxxxxxxx.cybozu.com/'; const authorization = encodeBase64Text('xxxxxxxx:xxxxxxxx'); function myFunction() { let app_id = 16; let data = { 'app':app_id, 'fields': ['レコード番号','レコード作成日時','メールアドレス','チェック'], 'query': 'レコード作成日時 = THIS_YEAR() order by レコード番号 asc', 'size': 500 } let result = CreateCursor(data); let records_data = GetCursor(result.id); console.log(records_data.records);//consoleにレコード情報を表示 //レコード情報をすべて取得するまで繰り返す while(records_data.next){ records_data = GetCursor(result.id); console.log(records_data.records);//consoleにレコード情報を表示 // 取得したデータを整形 var output = []; records_data["records"].forEach(function(record){ var row = []; row.push(record["レコード番号"].value); row.push(Utilities.formatDate(new Date(record["レコード作成日時"].value), 'JST', 'yyyy/M/d HH:mm')); row.push(record["メールアドレス"].value); row.push(record["チェック"].value); output.push(row); }); // スプレッドシートに出力 var sheetOutput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); sheetOutput.getRange(2, 1, output.length, output[0].length).setValues(output); } } //カーソルの作成 function CreateCursor(data) { let headers = { 'Content-Type':'application/json', 'X-Cybozu-Authorization':authorization }; let options = { 'method' : 'post', "headers" : headers, 'payload' : JSON.stringify(data) }; let response = UrlFetchApp.fetch(api_url+'/k/v1/records/cursor.json', options); return JSON.parse(response); } //カーソルIDからレコード情報の取得 function GetCursor(id) { let headers = { //'Content-Type':'application/json', 'X-Cybozu-Authorization':authorization }; let options = { 'method' : 'get', "headers" : headers }; let response = UrlFetchApp.fetch(api_url+'/k/v1/records/cursor.json?id='+id, options); return JSON.parse(response); } // Base64エンコード function encodeBase64Text(text) { return Utilities.base64Encode(text, Utilities.Charset.UTF_8) }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/26 09:17
2022/10/26 09:24