簡體   English   中英

將電子郵件發送到以前的Google表單提交,具體取決於所編輯的列

[英]Send email to previous Google Form Submit depending on which column was edited

我的Google腳本出現問題。 它實際上按原樣工作,但是問題在於,在提交表單並且有人提交新表單之后,第一個提交的表單將不再發送電子郵件,因為它正在尋找LastRow。 我很難使它正常工作...有人可以幫忙嗎?

以黃色突出顯示的列,由供應商填寫后,右側第5列(綠色)也應填寫“已發送”,以使用戶知道已將電子郵件發送給創建表單的人。

這是表格的圖片,希望能有一個更好的主意http://i57.tinypic.com/34tej4w.png

function sendNotification() {
 var doc = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = doc.getSheets()[0];
 var startRow = sheet.getLastRow();
 var dataRange = sheet.getRange(startRow, 1, 1, 21) ;
 var data = dataRange.getValues();
 var row;
 for (i in data) {
 row = data[i];
 var EMAIL_SENT = 'Sent';
 var emailSent = row[19];     // Third column
  if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates

   //Define Notification Details
  var subject = "Row 12 has been edited!";
  var body = 
          '<html><body><b><u>Product Check</u></b>'
           + '<br><b>Time: </b>'
           + row[0]
           + '<br><b>Email requested: </b>'
           + row[1]
           + '<br><b>Request date: </b>'
           + row[2]
           + '<br><b>ISBN: </b>'
           + row[4]
           + '<br><b>Product Title: </b>'
           + row[7]
           + '<br><b>Supplier Name: </b>'
           + row[8]
           + '<br><b>PO Number: </b>'
           + row[10]
           + '<br><b>Comments: </b>'
           + row[12]
           + '<br>View the spreadsheet here: <a     href="#"><b>Click here</b></a> </html></body>';
 if (row[13] != '' && row[0] != '' && row[18] == '') {
  var recipients = row[1];
  var subject = "Column 'N' was edited!";
  sheet.getRange(startRow, 19, 1, 1).setValue(EMAIL_SENT) && sheet.getRange(startRow, 19, 1, 1).setBackgroundColor("#00ff00");
  SpreadsheetApp.flush();

    MailApp.sendEmail({
    to: recipients,
    subject: subject,
    htmlBody: body}); 
 }

您描述的行為是正常現象,您已經自己發現了起源...

與其使用最后一行作為參考,不如使用對應於row [19]的列中沒有“ EMAIL_SENT”的第一行,該行將是正確的。

但是在並發的情況下,只會處理一個請求,因此我建議您使用計時器觸發器每隔幾分鍾運行一次此代碼,以便在每種情況下都處理所有提交。

另一個解決方案是使用on Form Submit觸發器,但從處理程序回調對象而不是工作表中獲取值(例如e.namedValues, 請參閱doc此處 ),但這將意味着您的代碼會有更多更改。 在后一種情況下,每個提交都將獨立處理,即使2個或更多提交合在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM