发送电子邮件通知 Google 张

Sending Email Notification Google Sheets

我的公司创建了一个 Google 表单设置,使我们的流程之一变得更加容易。 Google 表单基于包含从表单输入的所有数据的主电子表格。然后该电子表格过滤掉表单提交并将数据发送到每个部门的电子表格,如前所述,该电子表格从 "Master Spreadsheet."

获取所有信息

我们之前设置了它,因此当员工进入并在他们的电子表格中批准或拒绝这些请求时,如果有人输入 "Approved" 或 "Denied.",我们会收到一封电子邮件通知最近我们更改了因此,如果某个人为客户提交了一个请求,它会自动获得批准,但是当我们这样做时,电子邮件通知停止工作,因为没有人为这些请求手动输入 "Approved" 或 "Denied" .手动输入时仍然有效,但自动填写单元格时,sendNotification 不起作用。

由于没有实际数据被输入到各个部门工作表中,我们想将通知触发器放在 "Master Sheet," 上,但我们很难发送电子邮件通知。基本上我们想要它,所以如果 "Column F" 中的任何单元格包含特定的电子邮件地址列表,它将向第三方发送一封电子邮件,通知他们实际继续进行更改。

这是我们目前所拥有的。请记住,这是最初有效的代码。我尝试过很多不同的变体,但都没有成功,但我不是受过最多教育的编码员:

function sendNotification() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Form Responses 3");
  //Get Active cell
  var mycell = ss.getActiveSelection();
  var cellcol = mycell.getColumn();
  var cellrow = mycell.getRow();
  var cellValue = mycell.getValue();

  var activeUser = Session.getActiveUser();
  var recipients = "xxxx@xxxxxxxxxx.com";
  var subject = "Update to "+ss.getName();
  var body = activeUser + " has marked row " + cellrow + " \"" + cellValue + "\" in \"" + ss.getName() + "\".  Visit " + ss.getUrl() + " to view the changes."; 

  if (cellcol == 2) {
    if (cellValue.indexOf('test1@test.com') >= 0) {
      var subject = "Lunch Is Served";
      Logger.log('Sending approval notification of row ' + cellrow + ' to ' + recipients);
      MailApp.sendEmail(recipients, subject, body);
    }  
  }
}

请记住,我们不能使用 lastRowNumber(至少我不认为我们可以),因为我们已经列出了一千多行,所以信息将填充到数组中 automatically.Lastly ,我们当前的触发器设置为 "On Form Submission" 因为我们希望这些电子邮件在提交表单时进入。

我提供了一个示例电子表格供大家查看。请在填写表格时使用 test1@test.com 作为您的电子邮件地址。

Google Sheet 可以在以下站点找到: Test Sheet!

非常感谢您,我期待着阅读您的回复!

您不能使用以下线路:

var mycell = ss.getActiveSelection();

如果该函数是 运行 来自 "On Form Submit" 触发器,则没有活动选择。虽然,有一个 属性 可用于 "On Form Submit" 事件对象,它给出了当前编辑的范围。您必须从表单提交中获取事件对象。然后你有3个选择。 1)只获取值 2)获取问题的对象及其值 3)获取编辑范围的范围。首先,您获得传递给函数的事件对象。提交表单时,数据会自动提供给与 On Form Submit 触发器关联的函数。字母e一般用作变量名获取事件对象:

function sendNotification(e) {

但是你可以使用任何变量名:

function sendNotification(objOfData) {

Apps Script Documentation - Spreadsheet - On Form Submit

function sendNotification(e) {
  var cellValue = e.values[4];//Get the value in column 5