【问题标题】:Send an Email When a Cell is Edited with a Certain Value [duplicate]使用特定值编辑单元格时发送电子邮件[重复]
【发布时间】:2015-02-05 18:54:11
【问题描述】:

我设置了一个 Google 表单来记录用户报告的关于我们维护的数据库的错误。回复进入谷歌表格,并记录用户电子邮件。从本质上讲,我希望在该 Google 表格中有一个状态字段 - 当它设置为“完成”之类的内容(与响应在同一行)时,我希望自动发送一封电子邮件到提交响应的用户,让他们知道他们的响应状态已完成。这有点像许多公司使用的票务系统(但我们没有足够的带宽来设置它,所以我们正在寻找简单/免费的东西)。

【问题讨论】:

  • 是否手动输入了“完成”状态?我假设它没有用代码设置。
  • 是的,完整将由工作表的用户输入。

标签: email google-apps-script google-sheets eventtrigger


【解决方案1】:

您不能在 onEdit 触发器内发送电子邮件。因此,您必须将编辑内容保存在某个地方,可能在 UserProperties 中,并有一个基于时间的触发器,每分钟将此值发送到您的电子邮件。

请参阅:Email Notifications in Google Spreadsheets

Google 电子表格支持行编辑的电子邮件通知(工具 - 通知规则),但我上次尝试时,它从来没有用过。

【讨论】:

  • 您无法在简单的 onEdit 触发器中发送电子邮件,但您可以通过可安装的编辑触发器执行此操作。有关示例,请参见 this answer
【解决方案2】:

创建一个onEdit() 函数,在编辑单元格值时捕获它,然后运行代码。

function onEdit(e){
  // Capture the cells value after it is edited
  var valCell = e.value;
  Logger.log('The cell value is: ' + valCell);

  if (valCell === "Complete") {
    //Get the range of the cell
    var theRange = e.range;

    //Get the row of the range
    var theRowOfEdit = theRange.getRow();

    // Returns the cell with email
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];
    var cell = sheet.getRange("B" + theRowOfEdit.toString());

    //Get the user email
    var userEmail = cell.getValue();

    //Send the email
  }
}

这不是您需要的完整代码。但是,设置此代码;对其进行测试、调试,如果您有特定问题,请发布另一个问题,其中包含错误消息和无效的代码行。

在代码编辑器中使用 debug 和/或 Logger.log() 语句来调试代码。

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多