Google apps script 如何生成电子表格';脚本中的onFormSubmit触发器?

Google apps script 如何生成电子表格';脚本中的onFormSubmit触发器?,google-apps-script,Google Apps Script,有没有办法在脚本中触发电子表格的onFormSubmit?也就是说,不是使用google表单触发onFormSubmit? 我尝试将以下sendHttpPost代码发布到电子表格Web应用程序: function sendHttpPostSelf() { var payload = { "name" : "name", "comment" : "comment", }; var options = { "method" : "post",

有没有办法在脚本中触发电子表格的onFormSubmit?也就是说,不是使用google表单触发onFormSubmit? 我尝试将以下sendHttpPost代码发布到电子表格Web应用程序:

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应用程序中正确触发doPost()。但是,该代码不会触发电子表格的onFormSubmit。或者,在插入电子表格时,是否有办法编写onInsert触发器的脚本?

onFormSubmit触发器仅在Google表单提交时才会触发。获取一个应用程序脚本代码来触发它是相当棘手/不受支持的

如果您只是希望能够检测新行,那么可以使用onEdit触发器检查范围以查看插入的内容


在一份报告中提供了一份不触发OneEdit的内容列表及其问题跟踪ID。这里有一个示例代码,演示如何检测新行。。。但需要注意的是,您需要执行其他类型的编辑来触发它


所以,坏消息是——尽管Arun给出了答案,插入行或脚本编写值都不会触发onEdit

如果我错了,请告诉我,但我理解的是,您希望提交的值不是通过google表单传递的,而是使用您自己构建的表单,并且您希望使用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函数(提交表单时通常会调用该函数)

感谢您的输入Arun,当使用脚本插入新行时,onEdit触发器会工作吗?关于社区,事实上它在所有情况下都会工作,您必须弄清楚这是否是一个行插入。使用它,您可能会看到一些有趣的选项。Arun,请查看上面的正确答案;我确认了这一点dit触发器在插入时也不会触发。我将在Issue Tracker中提交一个新的功能请求,以使用onInsert触发器…我添加了另一条评论,以投票支持已存在的新功能请求:Issue 1363谢谢你,Mogsdad,我感谢正确的答案,它为我节省了一些痛苦的调试!代码没有触发ger电子表格的onFormSubmit-onFormSubmit触发器只有在Google表单提交时才会触发…如果您愿意,请在Issue Tracker#1363中添加一条注释以作为新请求实现。@user1387318确实,它不会触发(onFormSubmit触发器),但会“好像”触发它触发了onFormSubmit触发器:doPost将向电子表格添加数据,然后调用函数onFormSubmit()