当特定列更新为“是”并且要从同一工作表的另一列获取电子邮件ID时,Google工作表的电子邮件触发器

时间:2019-10-14 06:16:55

标签: excel google-apps-script google-sheets

我有多个行和列,这些列和列每天都会更新,并且我希望触发电子邮件以从同一工作表的另一列中提取邮件ID。

例如,我在C列中存在许多电子邮件ID(由于每天都会添加数据,因此无法提及特定范围),并且当H列的值标记为“是”时,则来自相应列中的邮件ID必须填写C列,并应向该ID触发电子邮件。我尝试了多个脚本,但无法正常工作。

2 个答案:

答案 0 :(得分:1)

function onEdit(e) {
  if(e.range.getSheet().getName()!='Sheet Name Used in this Operation') return;
  if(e.range.columnStart==8 && e.value=="YES") {
    //Send email
  } 
}

我不确定,但我认为您可能需要创建一个可安装的触发器来发送电子邮件。

答案 1 :(得分:1)

为您的脚本启用Gmail服务

  1. 转到工作表,然后单击工具>脚本编辑器
  2. 在脚本编辑器中,单击资源>高级Google服务...,启用“ Gmail API”,然后单击确定。

代码

将以下代码复制并粘贴到工作表的脚本编辑器中(并进行必要的修改):

function sendEmail(dest, data) {
  var messageBody = 'Hello, there has been a new release:\n\n' + JSON.stringify(data);
  GmailApp.sendEmail(dest, 'Automated email from sheet', messageBody);
}

function onEditTrigger(e) {
  var range = e.range;
  if (range.columnStart == 8 && e.value == 'YES') {
    // Prepare the email
    var row = range.getSheet().getRange(e.range.rowStart, 1, 1, 8).getValues()[0];
    var headers = range.getSheet().getRange(1, 1, 1, 8).getValues()[0];

    var dest = row[1];
    var data = {};
    for (var i=0; i<8; i++) {
      data[headers[i]] = row[i];
    }

    sendEmail(dest, data);
  }
}

该代码将获取已修改行的前8列,并将它们连同标头一起以JSON格式发送到B列中指定的电子邮件中。您可以看到我用于测试here的电子表格。我收到的电子邮件如下所示:

enter image description here

将onEditTrigger函数设置为可安装的触发器

  1. 从工作表的脚本编辑器中,单击时钟图标(“ 当前项目的触发器”)
  2. 点击添加触发器按钮
  3. 选择 onEditTrigger 函数作为要运行的函数,并将“编辑时” 作为事件类型(example trigger configuration),然后单击“保存”

现在,每次修改工作表时,上面的代码将运行,并在适当的情况下发送消息。