Google文档需要脚本来发送自动电子邮件

时间:2020-04-28 22:37:23

标签: google-apps-script google-sheets triggers google-forms

我正在寻找可以添加到Google表格中的脚本,该脚本将自动生成电子邮件并在电子表格中包含某些字段。
我已经创建了一个Google表单,并将该数据发送到Google电子表格,这个想法是,当用户提交表单时,它将数据发送到电子表格,然后电子表格发送自动电子邮件。
我找到了该脚本并对其进行了一些编辑,但在第四行(var theEvent = e.values[1])上失败了:

function AutoConfirmation(e){
      var theirFirst = "Bill";
      var theirEmail = johndoe@example.com;
      var theEvent = e.values[1];
      var subject = "Form Submitted";
      var message = "Thank you, " + theirFirst + " for the expressed interest in our " + theEvent;
   MailApp.sendEmail (theirEmail, subject, message);
}

第4行不是从Google工作表的第1列中提取数据吗?这是一个旧的脚本,现在不起作用吗? 在我的Google工作表中,我以“网站”而不是“事件”作为列,而另一个以“完整”作为标题。 让我知道我在这里错过了什么,因为这似乎应该很简单。 我试图运行它,结果是:screenshot of the error I get 运行上面的代码时,我会遇到相同类型的错误,因此我认为我将运行记录器以查看是否获得任何结果,并且结果在屏幕截图中。单击链接以查看它。

2 个答案:

答案 0 :(得分:0)

看来,您找到的脚本是要放入与Google电子表格绑定的Apps脚本项目中的函数,并由可安装的触发器调用。

第4行是否应该从Google工作表的第1列中提取数据?

不。 e.values返回一个使用从零开始的索引的数组。这意味着第一列A的索引为0

答案 1 :(得分:0)

问题:

您得到的错误:

TypeError:无法读取未定义的属性“值”

表示事件对象(e)未定义,这意味着您正在尝试手动运行此函数。触发事件附带的功能应该在发生相应的触发事件时运行:在这种情况下,用户提交表单时。您不必手动运行它。

解决方案:

  • 第1步:安装触发器:如果尚未安装触发器,请按照these steps手动安装触发器,或以编程方式将以下函数复制到绑定脚本并运行一次:
function createOnFormSubmitTrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("AutoConfirmation")
  .forSpreadsheet(ss)
  .onFormSubmit()
  .create();
}
  • 步骤2:提交表单!:安装触发器后,当用户提交附加到电子表格的表单时(即假设您已将表单附加到电子表格中) ),AutoConfirmation自动运行,并且包含these properties的事件对象作为参数传递。如果手动运行它,则eundefined(没有将事件对象作为参数传递),并且会收到错误消息。

注意:

  • e.values[1]将检索提交表单时写入column B的相同值,因为JavaScript数组的索引为零。您可能需要改用e.namedValues['yourProperty'],以确保您正在检索所需的信息。

参考: