有没有办法在脚本中触发电子表格的onFormSubmit?也就是说,而不是使用谷歌表格来触发onFormSubmit? 我尝试将以下sendHttpPost代码发布到电子表格Web App:
function sendHttpPostSelf() {
var payload = {
"name" : "name",
"comment" : "comment",
};
var options = {
"method" : "post",
"payload" : payload
};
var url="https://script.google.com/macros/s/AKfycbzlVoiDQMbLe4yliErDoNub6A0m3tijSfPAUMEBENgIikQnLQ_H/exec";
var resp=UrlFetchApp.fetch(url,options);
Logger.log(resp.getContentText());
}
代码正确触发电子表格Web App中的doPost()。但是,代码不会触发电子表格的onFormSubmit。或者,有没有办法在插入电子表格时编写 onInsert 触发器的脚本?
答案 0 :(得分:0)
onFormSubmit触发器只会在Google表单提交时触发。获取Apps脚本代码来触发它是非常棘手/不受支持的。
如果您只想检测新行,可以使用onEdit触发器并检查范围以查看插入的内容。
https://developers.google.com/apps-script/understanding_events
答案 1 :(得分:0)
previous answer中提供了一系列事项 - 不触发onEdit及其问题跟踪ID。那里有示例代码,演示了对新行的检测......但需要注意的是,您需要执行其他类型的编辑来触发它!
所以,坏消息 - 尽管Arun的回答,插入行和写入值的脚本都不会触发onEdit。
答案 2 :(得分:0)
请告诉我,如果我错了,但是根据我的理解,你想要提交的价值不是通过谷歌表格,而是你自己建立的表格,你想提交doPost行动。
如果是这样,你可以做到这一点:
1 /使用appenrow()插入电子表格中doPost的数据
2 /在doPost()中调用通常使用onFormSubmit调用的函数(你需要转换为onFormSubmit函数的好参数(好像它是用一个真实的formSubmit调用的)
这是一个示例函数:
function onformSubmit(e){
var answers = e.values;
if (typeof(answers) == "undefined") answers = e;
MailApp.sendEmail("youremailadress", "form first answer", answers[1]);
}
function doPost(e){
MailApp.sendEmail("youremailadress","reponse doPost",e.parameter.name);
SpreadsheetApp.openById("spreadsheet id").getSheetByName("spreadsheet name").appendRow([new Date(),e.parameter.name,e.parameter.comment]);
var toe = [new Date(),e.parameter.name,e.parameter.comment];
onformSubmit(toe);
return(ContentService.createTextOutput().setContent("okey"));
}
function submitIt(){
var payload = {
"name" : "name",
"comment" : "comment",
};
var options = {
"method" : "post",
"payload" : payload
};
var url="https://script.google.com/macros/s/yourscripturl/exec";
var resp=UrlFetchApp.fetch(url,options);
}
当你启动submitIt()时,它将调用doPost,它将在你的电子表格中写入行,就像表单被提交时一样,然后它将调用函数onformsubmit(通常在表单被提交时调用)