【发布时间】:2015-01-12 18:25:43
【问题描述】:
我是 Google 脚本的新手,但很快就掌握了它的要点。我正在尝试为我们的商业打印机自动订购碳粉。我设置了一个包含 4 个比例问题的 Google 表单,每种颜色一个 (CMYK),从 1 到 5 个碳粉盒有多种选择。
然后,在记录响应的 Google 电子表格中,我创建了一个脚本(主要来自互联网示例),该脚本获取电子表格的最后一个条目(底行)并发送一封电子邮件,其中包含所需的碳粉盒数量,并带有触发器onFormSubmit()。
当我使用表单并点击提交按钮时,没有任何反应。表格和电子表格之间似乎存在脱节?也许某些触发器不起作用?我尝试使用脚本编辑器中的触发器以及可编程触发器,但它仍然无法从表单提交中工作。
脚本触发器的“ScriptApp”部分似乎无法被 Google Scripts 编辑器识别,因为它不是特定的颜色,与其他代码不同,这让我想知道是否必须编写某种形式#include 声明还是什么?所有互联网示例都以彩色显示 ScriptApp。
“编译”时没有发现任何错误...
function sendFormByEmail(e)
{
ScriptApp.newTrigger("sendFormByEmail").forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()).onFormSubmit().create();
var email = "example@email.com";
var s = SpreadsheetApp.getActiveSheet();
var headers = s.getRange(1,2,1,s.getLastColumn()-1).getValues()[0];
var colors = s.getRange(s.getLastRow(),2,s.getLastRow(),s.getLastColumn()-1).getValues()[0];
var message = "";
var subject = "Toner order";
for(var i in headers)
message += headers[i] + ': ' + colors[i] + "\n\n";
MailApp.sendEmail(email, subject, message);
}
【问题讨论】:
-
您只是为附加到电子表格的表单创建触发器。 sendFormByEmil(e) 只会在您提交表单时触发(根据您创建的触发器)。
-
Initialize()函数不调用sendFormByEmail()函数。如果您只希望在提交表单时运行sendFormByEmail()函数,您不会希望它这样做。 -
为什么要先删除所有触发器?为什么要在代码中创建触发器?
-
我编辑了问题以消除不需要的冗余代码,例如先删除触发器。此代码也不起作用...
-
另外,我正在代码中创建触发器,因为从编辑器的资源部分它也不起作用,所以我认为对它们进行编程会起作用吗?它没有...
标签: javascript forms google-apps-script google-sheets event-triggers