ユーザーはGoogleフォームをGoogleシートに送信するたびに、フォームフィールドの電子メールアドレスを使用して電子メール返信を自動的に送信するOnSubmit機能を起動し、正しい/間違った 'データ検証を行うことができる。最新のフォーム送信データがシートの最後の行に書き込まれたので、次のコードを使用して、シートから両方のデータを取り出そうとしました(電子メールアドレスに関数パラメータを使用することはできますが)。Googleフォームの投稿時にメールを送信
私はまた、フォーム提出イベントトリガーと電子メール認証を既に設定しています。しかし、電子メールは機能していないようです。フォーム提出時にトリガするように設定されている場合、スクリプトエディタでこの関数を実行する必要がありますか?私は実行をクリックしようとすると、コードは実行時間を超えています。
function OnSubmit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = sheet.getLastRow()-1;
var numRows = 1; // Number of rows altogether
// Fetch the range of cells A(last row):G(last row)
var dataRange = sheet.getRange(startRow, 1, numRows, 7);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[2]; // Column C of last row
var message = "";
while(row[6] === "") { // Delay until data verification is done
Utilities.sleep(10000);
}
var subject = row[6] // Column G (data verification cell) of last row
MailApp.sendEmail(emailAddress, subject, message);
}
}
Loggerを使用して実行をトレースしてください –
詳細を教えてください。 Google Appsスクリプトを初めて試してみます。私は、私がオンラインで読んだことに基づいてコードをまとめました。 –
このコード部分は使用できません: 'while(row [6] ===" "){//データ検証が完了するまでの遅延 Utilities.sleep(10000); } 'は、スクリプトの実行中にデータが更新されないため、関数が呼び出されたときにrow [6]が空の場合、ループは常に無限になります。 –