Google表格脚本仅在编辑活动行中的列A时才发送电子邮件

时间:2016-08-12 19:21:21

标签: google-sheets

我已经做了很多搜索,但我找不到我需要的东西。我要做的是以下内容:

我有一个Google电子表格,而A列包含特定值(状态)的下拉列表。当该值设置为“已完成”时,我想要发送电子邮件。

我有发送电子邮件部分,但是如果它已经设置为“已完成”,我会更改行中的其他内容,然后它会发送另一封电子邮件。我可以在IF语句中静态指定一列(例如; A11),但它必须是A列中每个活动行的动态。

到目前为止,这是我的代码。提前谢谢。

function EmailOnCompletion(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Form Responses 1");
  var row = s.getActiveRange().getRow();

  var status = s.getRange(row, 1).getValue();
  var hostname = s.getRange(row, 7).getValue();
  var to = s.getRange(row, 5).getValue();
  var subject = 'subject';
  var html = 'body';

  if( status == 'Completed') {
      GmailApp.sendEmail(to, subject, html, {htmlBody: html, from: "email@address.com"});
    }
  }

1 个答案:

答案 0 :(得分:0)

您已经使用可以使用的onEdit触发器传递事件对象 使用它也更安全,因为可能存在延迟并且当前活动的单元可能已经改变。

如果状态单元格在A列中,请使用

if (e.value === "Completed" && e.range.getColumn() === 1)

检查该行的状态列是否已更改为"Completed"

您还可以使用事件对象推断收件人保持一致。