質問: SpreadsheetApp.openById(destinationSheetID).getSheetByName('フォームの回答 1'); // シート最終行の再編集用URLが記入済みならば処理を中断する。 if ( sheet.getRange( sheet.getLastRow(), colEditURL ).getValue() != "" ) { return; } // シートの最終行のA列に再編集用のURLを追加します。 sheet.getRange( sheet.getLastRow(), colEditURL ).setValue( response.getEditResponseUrl() ); SpreadsheetApp.flush(); }
回答: 最近の流行を追っていないのですが 1 年くらい前までは、シート側のフォーム送信時のトリガー発火時点ではシートに値が埋まっていない(シートに最新の回答が書かれていない)現象の報告が、teratail でもときどき発生していました。具体的には下記の return にあたっている現象です。 ``` // シート最終行の再編集用URLが記入済みならば処理を中断する。 if ( sheet.getRange( sheet.getLastRow(), colEditURL ).getValue() != "" ) { return; } ``` トリガー発動の記録があるなら、↑の return の前に `Logger.log("irregular");`とか入れて、ここにきてるか確認してみてはいかがでしょうか。(実際には他のところにも Logger を仕込んで、必要な値が必要なタイミングで取れているかを一度に確認できるようにしたほうがいいとは思いますが)