実現したいこと
GASでデプロイしたwebアプリから並列処理で同時に一つのスプレッドシートへ書き込みをしたいです。(GASの6分制限を超えるため)
sheet.appendRow(list);
で書き込みを行っていますが、どうやら同じ行に何回か上書きされてしまうようで、ちゃんとすべてのデータを書き出すことができません。どうすればいいでしょうか
https://web-breeze.net/gas-running-over-time-limit/#toc3
このサイトを参考にしました。
発生している問題・エラーメッセージ
書き込まれる行がかぶってしまいデータが上書きされてしまう
該当のソースコード
javascript
1function doGet() { 2 return HtmlService.createHtmlOutputFromFile('webapp'); 3} 4 5function myFunction(n) { 6 let lists=[]; 7 //なんらかの処理 8 //例えば 9 list.push([1000+n,2000+n,3000+n]); 10 list.push([4000+n,5000+n,6000+n]); 11 list.push([7000+n,8000+n,9000+n]); 12 writedown(lists); 13} 14 15function writedown(list) { 16 let sp=SpreadsheetApp.openById("~~~~~~~~~~"); 17 let sheet = sp.getSheetByName("~~"); 18 for(var i = 0; i < list.length; i++){ 19 sheet.appendRow(list[i]); 20 } 21}
html
1//webapp.html 2<!DOCTYPE html> 3<html> 4 <head> 5 <base target="_top"> 6 </head> 7 <body> 8 <button onClick="runInParallel()">並列実行</button> 9 <script> 10 const limit = 30; 11 12 function runInParallel() { 13 for (let i = 0; i < limit; i++) { 14 google.script.run.myFunction(i); 15 } 16 } 17 18 </script> 19 </body> 20</html> 21
