GoogleAppsScript(GAS)で、スプレッドシートに記入する処理をする際、
記入したはずなのに印刷時に反映されてなかったりといった、
意図しない結果になることがあります。
これ、たとえば請求書を作ったとして、
宛名は正しいのに金額だけ前のまま、
というような、心臓に悪いバグの原因になります。
しかも発生したりしなかったり、中途半端に発生したりするので、
原因がわかりにくい。検索にも苦労したので以下にメモ。
対策として、下の一行を適宜挿入します。
スプレッドシートの再描画的な処理になるようです。
VBAのDoEvents
的に挿入しておけばよいでしょうか。
flush.js
SpreadsheetApp.flush(); // シートの再描画
他に、処理を遅延させる方法として、
sleep.js
Utilities.sleep(1000); // シートの処理完了を待つ
も利用できます。単位はミリ秒。
VBAのApplication.Wait
やWindowsAPIのSleep
にあたります。