【问题标题】:Event object for installable trigger可安装触发器的事件对象
【发布时间】:2017-03-10 20:39:51
【问题描述】:

所以,我正在尝试编写一个代码,当单元格中出现特定值时将发送电子邮件。为此,我使用了一个可安装的 OnEdit 触发器,因为简单的触发器无法访问 mailApp.sendEmail。可安装的触发器用于以下功能:

function myOnEdit(e){
  var ss = SpreadsheetApp.getActiveSheet();
  var email_finished = "abc@email.com"
  var r = e.range;
  var heading = ss.getrange(1,range.getcolumn()).value

  if (heading == "FINISHED" && r.getvlaues() == "√") {
    MailApp.sendEmail(email_finished, "SOP Review", "SOP has been finished");
  }
}

我收到“e”未定义的错误。我想知道如何为可安装的 onEdit() 触发器引用事件对象。

我是一个绝对的 Javascript 菜鸟,所以请尽可能多地启发我的编码大师!提前致谢。

编辑: 正如塞尔吉所说,有一堆错别字。 VBA 编码的副作用!但我更正了错别字并改变了我的做法:

function myonEdit(){
  var ss = SpreadsheetApp.getActiveSheet();
  var e = ss.getActiveCell();
  var heading = ss.getRange(1, e.getColumn()).getValues();
  var rvalue = e.getValue(); 
  var email_finished = "abc@xyz.com";

  var ui = SpreadsheetApp.getUi()
  ui.alert("Are you sure?", ui.ButtonSet.OK)

  if (heading == "FINISHED" && rvalue == "√") {
    MailApp.sendEmail(email_finished, "SOP Review", "SOP has been finished");
  }
}

我在编辑>>当前项目的触发器的手动触发器上添加了这个。它在调试、发送电子邮件等时工作正常。但是,当我编辑工作表时,不会触发代码!我不确定这次我做错了什么。

【问题讨论】:

  • 如果您从代码编辑器运行代码,则 e 未定义。如果这是问题所在,人们总是这样做。

标签: google-apps-script google-sheets gs-installable-triggers


【解决方案1】:

另一个答案和桑迪的评论都是正确的,如果函数不是从“编辑”事件中调用的,那么 e 确实是未定义的......

当然,我的朋友Mogsdad 在这篇出色的帖子中提出了一个聪明的解决方法:How can I test a trigger function in GAS?


编辑

您的代码中有太多拼写错误,而您使用了错误的方式。

下面是一个简化的版本来展示它的工作方式。你只需要定义你真正需要的e参数

function test_myOnEdit() {
  var e = {};
  e.range = SpreadsheetApp.getActiveSheet().getActiveRange();
  myOnEdit(e)
}

function myOnEdit(e){
  var email_finished = "abc@xyz.com";
  var range = e.range;
  var heading = range.getValue();

  Logger.log("heading = "+heading);
}

【讨论】:

  • 我添加了测试代码。请检查问题中的编辑。原来我不能在这里添加完整的代码!提前感谢您的帮助。
  • 是的,我意识到了错别字!我改变了我这样做的方式,并从活动单元格中获取了值,并添加了一个手动触发器以在每次编辑时运行该函数。现在的问题是触发器没有触发,不知道为什么。不过,当我调试它时它运行良好。
  • 我想我找到了问题所在。我相信这是因为我不是该文件的所有者。我得把这件事告诉我的老板!
【解决方案2】:

是的 (e) 只有在工作表内触发时才有值。您不能只在脚本编辑器中对其进行测试。我也不得不花时间弄清楚这一点。

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多