繁体   English   中英

TypeError:无法从未定义中读取属性“值”。 (第9行,“代码”文件)

[英]TypeError: Cannot read property “values” from undefined. (line 9, file “Code”)

 function onInstall(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Form'); var Timestamp = e.values[0]; var Load = e.values[1]; var Email = e.values[2]; var Location = e.values[3]; var template = HtmlService.createHtmlOutputFromFile("notification"); template.Location = Location; MailApp.sendEmail(Email, "subject", "", { HtmlBody: template.evaluate().getContent() }); } 

我已经写了这个小程序。 每次用户编辑电子表格。 它应该运行触发器并向列中提到的电子邮件地址发送电子邮件。 我的编码不好。 但是请帮我解决这个问题,我已经尝试了很久了。

这是公共电子表格电子表格的链接

 function() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetName('Form'); } function onEdit(e) { var Timestamp = e.values[0]; var Load = e.values[1]; var Email = e.values[2]; var Location = e.values[3]; MailApp.sendEmail(Email, "check In Call", "location"); } 

2件事:

  1. 如果尝试测试从脚本编辑器运行的代码,它将无法正常工作,并且您会收到错误消息,因为没有为e分配任何值(因为实际上没有事件)。
  2. 简单onEdit功能不能够发送电子邮件,看文档中关于事件和触发这里

您应该在编辑(实时)时测试代码,并设置可安装的onEdit触发器(脚本编辑器菜单/资源/此项目触发器/添加新触发器)

您也可以使用代码“模拟”事件,有关详细信息,请参见Mogsdad的答案

有很多原因导致此脚本无法运行。 而是修复错误,我从头开始为您编写了代码段,然后我将尝试解释为什么当前不能逐行运行。

首先,这是一些工作代码:

function onEdit(e) {
  var activateSheet = SpreadsheetApp.getActiveSpreadsheet();
  SpreadsheetApp.setActiveSheet(activateSheet.getSheetByName('Form'));
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = e.range.getRowIndex();//Gets the row the change was made to.  

  var timestamp = sheet.getRange(row, 1).getValues(); //Gets the email
  var load = sheet.getRange(row, 2).getValues(); //Gets the email
  var email = sheet.getRange(row, 3).getValues(); //Gets the email
  var location = sheet.getRange(row, 4).getValues(); //Gets the email

  MailApp.sendEmail(email, "Check In Call", location);

}

“ Load”和“ Timestamp”字段似乎并不需要您想要的内容,但是我还是把它们留了下来,因为也许您需要它们。

以下是对您不起作用的事情的列表:

  1. 调用工作表的第一个函数在任何阶段都没有运行,因为没有触发器,它也不会将激活的工作表传递给您的“ onEdit”功能。
  2. “ getSheetName()”用于检索工作表的名称,而不是按名称获取工作表。 您实际上正在寻找的方法是:“ getSheetByName(name)”。
  3. 仅当编辑的内容是单个单元格 (基于电子表格的可能性不大)时, e.value才可用
  4. 即使e.value不是单个单元格,也不能正确使用它,但这不是此问题的主题。

附带说明:我从语法错误中感觉到您不熟悉Javascript。 在尝试使用Google Apps脚本进行任何操作之前,我建议您先熟悉Javascript,以避免尝试完成简单操作时浪费很多时间和沮丧的时间。

暂无
暂无

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

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