実現したいこと
・gasでapiを利用してkintoneから取得したデータをスプレッドシートへ書き込む
(追加データは最終行へ追加したい)
前提
初心者です。
gasでapiを利用してkintoneのデータをスプレッドシートへ書き出そうと試行錯誤しています。
追加されたデータは最終行へ追加されるようにしたいです。
お見苦しいコードで申し訳ありませんが、ご確認いただき問題解決のご回答頂けますと幸いです。
発生している問題・エラーメッセージ
getLastRowで最終行を取得し、最終行+1にスプレッドに書き込んでいないレコードのデータのみを追加したいのですが、
最終行+1に、すべてのレコードが再度書き込みされてしまいます。
例:すでにaからdまでのレコードが書き込まれていた場合、再度実行するとdの次の行にまたaからdまでのデータが書き込まれ重複してしまう。
getLastRowを使用しなければ追加データのみが一番上の行に書き込まれますが、書き込まれたデータを確認し処理したあとに手動でフラグ立てするのですが、データが追加された際にフラグも立った状態になってしまうため最終行にデータを追加したいと考えています。
該当のソースコード
gas
1function getRecords() { 2 var urlGetRecords = "appURL"; 3 var appId = appID; 4 var apiToken = 'apikey'; 5 6 var paramFields = "&fields=$id," + encodeURIComponent("レコード番号,ステータス,会員名,サポート担当処理用,連動開始日目安"); 7 var url = urlGetRecords + "?app=" + appId + paramFields; 8 var res = JSON.parse(UrlFetchApp.fetch(url, { "method": "get", "headers": { "X-Cybozu-API-Token": apiToken } })); 9 10 11 var output = []; 12 res["records"].forEach(function (record) { 13 var row = []; 14 15 row.push(record["レコード番号"].value); 16 row.push(record["ステータス"].value); 17 row.push(record["会員名"].value); 18 row.push(record["サポート担当処理用"].value); 19 row.push(record["連動開始日目安"].value); 20 21 output.push(row); 22 }); 23 24★ 25 var sheetOutput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名'); 26 var lastRow = sheetOutput.getLastRow(); 27 sheetOutput.getRange(lastRow+1,1, output.length, output[0].length).setValues(output); 28 29}
試したこと
★以降のコードは最初は以下の通りでした。
var sheetOutput = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート名');
sheetOutput.getRange(2,1, output.length, output[0].length).setValues(output);
これだと一番上の行にデータが追加されてしまうため、最終行をgetLastRowで特定してその下にデータ追加されるよう、該当のコードへ変更しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/28 14:15
2023/03/30 09:40
2023/03/31 00:31
2023/03/31 23:41
2023/04/03 06:22