簡體   English   中英

Google Script電子郵件確認

[英]Google Script E-mail confirmation

我的目標是要有一個填寫電子表格的表格。 表單的一部分將具有一個電子郵件地址,而另一個具有已完成的任務。 我希望在任務完成下將電子表格從“否”切換為“是”,然后通過電子郵件向用戶發送確認信息。 我不知道是否有可能,但是任何幫助將不勝感激。

編輯:

這段代碼是我現在要做的任務。 我喜歡它的設置方式,但是有兩個主要問題我想嘗試解決。 首先是腳本運行時,可以說我跳過了一行,腳本將失敗,並且不嘗試在行中嘗試更多的條目。 第二個問題是我不確定如何控制誰將腳本電子郵件發送到要求您還可以並首次運行腳本的位置。

// This constant is written in column O for rows for which an email
// has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";

function sendEmails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;  // First row of data to process
  var numRows = 1000;   // Number of rows to process
  // Fetch the range of cells M2:N1000
  var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[12];  // First column
    var message = row[13];       // Second column
    var emailSent = row[14];     // Third column
    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      var subject = "Help Desk Completion Response";
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(startRow + i, 15).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

電子郵件將始終以運行腳本的用戶身份發送。 您可以將腳本作為可安裝觸發器的結果運行,您可以在可訪問該腳本的任何Google帳戶上設置該觸發器,然后該腳本將作為該Google帳戶發送電子郵件。 例如,讓腳本使用基於時間的觸發器每天運行一次,並檢查EMAIL_SENT和TASK_COMPLETE的值,如果任務已完成但未發送電子郵件,則讓腳本發送電子郵件。 這還將解決空行問題,因為當TASK_COMPLETE為空而不是“是”時,它將不會嘗試發送電子郵件。

如果要使腳本立即發送電子郵件,則需要基於編輯的觸發器。 在這種情況下,您甚至不需要加載整個電子表格,但是簡單的e.range.offset()就足夠了。

就像是:

//This constant is written in column O for rows for which an email
//has been sent successfully.
var EMAIL_SENT = "EMAIL_SENT";

function sendEmails(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var columnNumber = e.range.getColumn(); //check if the changed value is TASK_COMPLETE
  if(columnNumber = 5 && e.value = "Yes") {
    var row = e.range.offset(0, -5, 1, sheet.getLastColumn()).getValues();
    var emailAddress = row[12];  // First column
    var message = row[13];       // Second column
    var emailSent = row[14];     // Third column
    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      var subject = "Help Desk Completion Response";
      MailApp.sendEmail(emailAddress, subject, message);
      e.range.offset(0,9).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

當然,確切的偏移量取決於電子表格中內容的確切位置。

暫無
暫無

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

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