Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌表单确认脚本_Google Apps Script - Fatal编程技术网

Google apps script 谷歌表单确认脚本

Google apps script 谷歌表单确认脚本,google-apps-script,Google Apps Script,我一直在尝试从以下内容整理确认脚本: 但我总是得到以下错误代码: TypeError: Cannot read property "values" from undefined. (line 5, file "Confirmation Email") 标准确认书上的脚本的目的是要有一个易于阅读和打印的表格,该表格只占一页,其中只包含相关信息,而不是占12页的标准确认书 在本例中,我使用它来创建食品订单。请求者将选择他们想要的活动项目,提交,然后发送电子邮件确认给管理员,管理员可以打印出来并交

我一直在尝试从以下内容整理确认脚本:

但我总是得到以下错误代码:

TypeError: Cannot read property "values" from undefined. (line 5, file "Confirmation Email")
标准确认书上的脚本的目的是要有一个易于阅读和打印的表格,该表格只占一页,其中只包含相关信息,而不是占12页的标准确认书

在本例中,我使用它来创建食品订单。请求者将选择他们想要的活动项目,提交,然后发送电子邮件确认给管理员,管理员可以打印出来并交给厨房提取。我已经成功地创建了一个邮件合并类型的文档,但是它会发送对列表中所有内容的确认,并且我只需要输入最新的行(因此是确认脚本)

这是我的代码:

    function onFormSubmit(e) {

  // First establish the variables. Name each variable by the e.values (column number in the spreadsheet).

  var timeStamp = e.values[0];
  var Activity = e.values[2];
  var pickUp = e.values[3];
  var pickUptime = e.values[4];
  var nPeople = e.values[5];
  var submitUser = e.values[6];
  var Equipment = e.values[7];
  var Drinks = e.values[8];
  var Breakfast = e.values[9];
  var Lunch = e.values[10];
  var Dinner = e.values[11];
  var eveningProgram = e.values[12];  
  var Event = e.values[13];
  var Snacks = e.values[14];
  var Notes = e.values[15];
  var userEmail = e.values[17];

  // These are the components of the email confirmation

   var emailTo = userEmail;
   var CCAddr = "admin@adminaddress.com";
   var subject = "Food Order Request";
   var emailBody =  "Food Order Requisition\n\n" +
                    "Pick up Date:" + pickUp + 
                    "\nPick up Time:" + pickUptime +
                    "\nSubmitted by:" + submitUser +
                    "\nDate Submitted:" + timeStamp +
                    "\n\nActivity:" + Activity +
                    "\nPeople:" + nPeople +
                    "\nMeal:" +Event +
                    "\nThe following is needed for" + Activity + "by" + submitUser + "who can be reached at" + userEmail +
                    "\n\nEquipment and Supplies:\n" + Equipment +
                    "\n\nDrinks:\n" + Drinks +
                    "\n\nSnacks:\n" + Snacks +
                    "\n\nBreakfast:\n" + Breakfast +
                    "\n\nLunch:\n" + Lunch +
                    "\n\nDinner:\n" + Dinner +
                    "\n\nEvening Program/Special Events:\n" + eveningProgram +
                    "\n\nThe following special notes were also requested:\n" + Notes +
                    "\n\nProcessed by:___________________ Processed Date & Time:_________________________Food Order Requisition";

  /**
   * Un-comment this to use it for debugging
   */
//  for (var i in e.values) {
//    Logger.log("" + i + ":" + e.values[i]);
//  }

                    MailApp.sendEmail(emailTo, subject, emailBody);


}

问题是它告诉我我的值是未定义的,我不知道为什么。。。有人可以帮忙吗?

此脚本无法从脚本编辑器执行,它只有在表单提交触发时才能工作,这是
e
(事件信息)获取其参数的方式。如果从脚本编辑器中启动,则事件信息为未定义,这是合乎逻辑的,因为没有发生任何事件

所以你应该通过发送表单来测试它


编辑:您必须创建一个
onFormSubmit触发器
,以便在提交表单时运行脚本:而且

我没有收到来自表单的任何电子邮件/script您是否授权该脚本用于邮件服务?如果是,请尝试复制Mailapp行,并将emailTo替换为您的邮件地址,以检查其工作方式。我在第一次播放脚本时授权了电子邮件。我尝试了你的新邮件应用程序行,但我仍然只得到谷歌生成的确认,而没有得到脚本生成的确认。你能澄清一点吗:是关于未定义的问题,还是关于脚本未执行的问题?在我看来,它最终似乎是第2个字母;-)请添加一个触发器(在ressource菜单中),该触发器将创建一个可安装的onFormSubmit触发器。我将用相关链接更新我的答案。成功了!谢谢小结:转到资源->所有触发器。。。从电子表格>OnFormSubmit运行OnFormSubmit事件