【问题标题】:Send email when certain data is selected from drop down从下拉列表中选择某些数据时发送电子邮件
【发布时间】:2021-05-05 01:56:00
【问题描述】:

例如,如果在 A 列中执行了一项操作,则会向 E 列中的相应电子邮件地址发送一封电子邮件。我们使用 Google 表格将路线计划发送给我们的客户,如果当我们的字段工人正在前往客户的途中,可能会生成一封电子邮件。我见过这样的使用脚本的选项,但没有一个会根据编辑的单元格发送到不同的电子邮件地址。

最好的方法是设置一个状态为“途中,服务,完成”的数据验证下拉菜单。这样一旦状态设置为“途中”,就会向另一行的地址发送电子邮件通知。

以下是我目前得到的脚本:

function sendEmail() { 
    // return all data in active spreadsheet
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues()
    for (i in values.length) { //iterate over each row
        // get value of column 1 (aka B) for this row 
        // this is the conditional cell for emailing
        var data= values[i][1];
        // get email address from column 2 (aka C)
        var emailAddress = values[i][2];
        var subject = "We are en route with your order"
        var message = "Our crew will arrive in 5 minutes";
        // if data cell equals En Route, send email for this row
        if (data = "En Route") ;{
            MailApp.sendEmail(emailAddress, subject, message);
        }
    }
}

我猜那里可能需要一个 onEdit() 函数。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您无法从onEdit() 发送电子邮件,因为simple triggers are not authorized to do this。相反,您应该创建一个可安装的触发器,例如,通过在脚本编辑器中选择 Resources > This project's triggers。将其设置为“从电子表格 > 编辑时”。

    此外,您的方法(每次编辑都扫描整张工作表,并向匹配“正在途中”的任何人发送电子邮件)可能会导致向同一人发送多封电子邮件:每次在其单元格处于编辑状态时进行编辑“在途中”,他们会收到一封电子邮件。你不想要那个。相反,使用event object 精确定位编辑位置和输入的新值。这就是函数的样子。

    请注意,Apps Script 方法中的行/列编号是从 1 开始的:第 2 列是 B,等等。

    function emailOnRoute(e) { 
      if (e.value == 'En Route' && e.range.getColumn() == 2) {
        var row = e.range.getRow();
        var sheet = e.range.getSheet();
        var emailAddress = sheet.getRange(row, 3).getValue();
        var subject = "We are en route with your order"
        var message = "Our crew will arrive in 5 minutes";
        MailApp.sendEmail(emailAddress, subject, message);
      }
    }
    

    【讨论】:

    • 我尝试了建议的代码并在运行脚本时收到以下错误消息:“TypeError: Cannot read property "value" from undefined. (line 2, file "Code")"
    • 您是手动运行(这不起作用),还是在编辑时触发触发器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2017-06-25
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2011-08-09
    • 2018-02-01
    相关资源
    最近更新 更多