繁体   English   中英

当单元格为特定值时从 Google Sheet 发送电子邮件

[英]Send email from Google Sheet when cell is certain value

以下是我正在尝试为其工作的工作表示例: https : //docs.google.com/spreadsheets/d/1M79ki9QVRkfkfkwy1uWyNAVddeyPpcvqDppi3Et-b-cLw/edit?usp=sharing

目标是当 I 列大于 2 且 K 列为空时发送电子邮件。 第 I 列是基于 CH 列的计数公式,这些列是手动填写的。

这是我的脚本,但它似乎不起作用:

function sendEmail() {
  
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Workable");

  var listing_id = sheet.getRange("B:B").getValues();
  var flag_count = sheet.getRange("I:I").getValues();
  var action_type = sheet.getRange("K:K").getValues();

  var subject = 'New Listing Flagged';
  var message = 'Listing' + listing_id + 'has been flagged. Please resolve ASAP in the QA Google Sheet. Thank you!';
  var email_address = 'allyson@hipcamp.com';

  if (flag_count > 2 && action_type == ""){MailApp.sendEmail(email_address, subject, message)}
}

我需要改变什么才能使它工作?

我在示例表中找到了您的最新代码。 由于您已决定使用 onEdit 触发器,因此您需要使用可安装的 onEdit 触发器,因为您使用的是需要授权的MailApp.sendEmail()服务。

先决条件(可安装触发器):

在此处输入图片说明

在此处输入图片说明


示例代码:

function sendNotification1(e) {
  Logger.log(JSON.stringify(e));
  var ss = SpreadsheetApp.getActiveSpreadsheet();   
  var sheet = ss.getActiveSheet();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var startRow = 2;
  var startCol = 3; //Column C
  var endCol = 8; //Column H

  if(sheet.getName() == "Workable"
    && col >= startCol
    && col <=  endCol
    && row >= startRow
    && sheet.getRange(row,9).getValue() > 2 //flag_count column > 2
    && sheet.getRange(row,11).getValue() == "" //action column null
    )
  {
    var campground_id = sheet.getRange(row,2).getValue();
    var email = 'your@email.com';
    var subject = "New Listing Flagged for Fraud";
    var body = 'Campground ' + campground_id + ' has been flagged for fraud. Please resolve ASAP in the QA Google Sheet. Thank you!';
    MailApp.sendEmail(email, subject, body);
  }
 }

它能做什么?

  1. 您的 I 列值取决于 CH 列中提供的值。 因此,您的触发器应该是 CH 列(列索引 3-8)中完成的值更改。 我添加了一个额外的条件来检查当前活动的工作表,以验证修改后的单元格在工作表Workable 如果大于 2,则检查列 I 中的值。最后,检查列 K 是否为空/空
  2. 发送电子邮件

输出:

在此处输入图片说明

在此处输入图片说明

(更新)

包含的复选框列将用作检查器按钮以触发电子邮件通知。

示例代码:

function sendNotification(e) {
  Logger.log(JSON.stringify(e));
  var ss = SpreadsheetApp.getActiveSpreadsheet();   
  var sheet = ss.getActiveSheet();
  var row = e.range.getRow();
  var col = e.range.getColumn();
  var startRow = 2;

  if(sheet.getName() == "Workable"
    && col == 9
    && row >= startRow
    && sheet.getRange(row,9).isChecked()
    && sheet.getRange(row,10).getValue() > 2 //flag_count column > 2
    && sheet.getRange(row,12).getValue() == "" //action column null
    )
  {
    var campground_id = sheet.getRange(row,2).getValue();
    var email = 'your@email.com';
    var subject = "New Listing Flagged for Fraud";
    var body = 'Campground ' + campground_id + ' has been flagged for fraud. Please resolve ASAP in the QA Google Sheet. Thank you!';
    MailApp.sendEmail(email, subject, body);
  }
 }

样品表:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM