【问题标题】:Google Sheets - Send email based on another cell's textGoogle 表格 - 根据另一个单元格的文本发送电子邮件
【发布时间】:2017-09-30 16:52:22
【问题描述】:

我有一个脚本,可以为单元格范围内的每个单元格发送一封电子邮件。为了防止在脚本重新运行时发送重复的电子邮件,它会在每次发送电子邮件时在每行中标记一个单元格(C 列)。请参阅“Sheet2”中的示例。

https://docs.google.com/spreadsheets/d/1_oMbZZjOhfdKuYNWOuyF3fao8yO6W3juFjUsFbFBJaU/edit?usp=sharing

但是,我想将其转换为“Sheet1”的脚本,只要相应行中的单元格包含特定文本,该脚本就会发送一封电子邮件。在此示例中,每当第 I 列包含复选标记 (✓) 时,我希望将一条消息(E 列)与其相应的主题行(D 列)一起发送。我还想防止重复电子邮件,就像“Sheet2”中的示例一样。换句话说,一旦第 I 列包含一个复选标记,则该消息已发送、完成,并且不会重新发送,除非该复选标记被删除并重新输入。

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

function sendEmails2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet2');
  var startRow = 2;  // First row of data to process
  var numRows = 2;   // Number of rows to process
  // Fetch the range of cells A2:B3
  var dataRange = s.getRange(startRow, 1, numRows, 3)
  // 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 = "ta.ri...@gmail.com"; 
    var message = row[1];       // Second column
    var emailSent = row[2];     // Third column
    if (emailSent != EMAIL_SENT) {  // Prevents sending duplicates
      var subject = row[0];   // First column
      MailApp.sendEmail(emailAddress, subject, message);
      s.getRange(startRow + i, 3).setValue(EMAIL_SENT);
      SpreadsheetApp.flush();
    }
  }
}

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: email text google-sheets cell send


    【解决方案1】:

    试试这个:

    function sendEmails2() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
      var s = ss.getSheetByName('Sheet1');
      var startRow = 2;  // First row of data to process
      var numRows = 2;   // Number of rows to process
      // Fetch the range of cells A2:B3
      var dataRange = s.getRange(startRow, 1, numRows, 3)
      // 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 = "ta.ri...@gmail.com"; 
        var message = row[1];       // Second column
        var emailSent = row[2];     // Third column
        if (row[8]) {  // Prevents sending duplicates
          var subject = row[0];   // First column
          MailApp.sendEmail(emailAddress, subject, message);
          s.getRange(startRow + i, 9).setValue("");
          SpreadsheetApp.flush();
        }
      }
    }
    

    【讨论】:

    • 您好库珀,感谢您的帮助!对不起,我对谷歌脚本很陌生,我不确定如何让它与 Sheet1 一起工作。选择复选标记时,我的收件箱中没有收到任何内容。我改变了几件事: var startRow = 3 和 var dataRange = s.getRange(startRow, 1, numRows, 3 因为在 Sheet 1 中的行是不同的——仍然没有。我的目标是尽快发送一封电子邮件当我单击下拉菜单上的复选标记时。此外,我不想从一系列单元格发送电子邮件,我只想发送一封电子邮件,如果它的行包含一个复选标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多