根据单元格中特定的文本输入自动发送电子邮件

时间:2019-06-13 23:04:55

标签: google-apps-script

我很难编写一个脚本来自动发送来自Google表格的电子邮件。电子邮件应发送到位于V列的电子邮件地址,但仅在同一行的AB列中输入“ N”之后。它只会在进入后立即发生一次,并且不会再次发生。

我尝试了一些脚本,例如Google Apps Script - Send email based on data in cell,但没有成功。

1 个答案:

答案 0 :(得分:0)

您需要的是遍历AB列并检查“ N”项(假设它只是一个字符串),然后发送电子邮件,然后为避免重复发生,可以将N更改为其他值。使用应用程序脚本看起来像这样:

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // Will return a 2D array with the entire's sheet values 
  var data = sheet.getDataRange().getValues(); 

  for (var i = 0; i < data.length; i++){
    if (data[i][0] == "N"){
      // Sends the email, The name section is the name people who receive the email would see ass the "from" id.
      // If there is no email in the cell this will return an error, so you can add a try/catch here to avoid that.
      GmailApp.sendEmail(data[i][1], "Subject", "Message", {name: 'N Finder Script'});

      //To avoid repetition, you can edit the N value after sending the email.
      sheet.getRange("A" + (i+1)).setValue(""); // This would be "AB" in your case.
      sheet.getRange("A" + (i+1)).setValue("S"); // S for email sent, for example.
    }
  }
}

一些小警告;我使用一个小的测试电子表格来运行它,这就是为什么我在“ A”列中搜索值的原因。当我检查data [i] [0]时,我正在检查第一列的第i行,您必须将0更改为与具有“ N”的列相匹配的数字。这同样适用于电子邮件,我在data [i] [1]中查看它们,您将更改为1以匹配您具有电子邮件列表的列。

最后,要使代码在每次添加N时运行,您可以添加一个onEdit触发器,您可以按照以下链接中的说明进行操作:

https://developers.google.com/apps-script/guides/triggers/installable