我可以在没有电子表格的情况下从 Google 表单触发脚本吗?

Can I trigger a script from a Google Form WITHOUT a Spreadsheet?

提问人:Ben 提问时间:2/13/2020 更新时间:2/13/2020 访问量:419

问:

我真的不想将我的表单回复存储在电子表格中,我只想收到一封包含结果的电子邮件(然后可能连接到 curl API 以将其添加到我的 CRM)

如果我将其用作电子表格,我已经可以工作,但不能仅使用表单中的代码来完成吗?

使用时

function onFormSubmit(e)

我只是没有得到 e 未定义。

提前致谢

google-apps-script 表单 - 提交 google-forms

评论


答:

2赞 Umair Mohammad 2/13/2020 #1

我们可以直接将脚本添加到Google表单中。

我们不需要将响应保存在某些谷歌表格中来运行脚本。

步骤:

  1. 转到 Google 表单
  2. 转到选项(3 个垂直点)
  3. 脚本编辑器
  4. 在此处添加脚本
0赞 Cooper 2/13/2020 #2

将它们链接到电子表格是一种简单的设置方法,如果您丢失了一个,它将始终存在于电子表格中。如果您想为每个订阅获取一封电子邮件。您可以使用 onFormSubmit 触发器。

表单提交事件对象

您可以使用以下命令创建触发器:

function createOnFormSubmitTrigger(funcname) {
  var ss=SpreadsheetApp.getActive();
  if(!isTrigger(funcname)) {
    ScriptApp.newTrigger(funcname).forSpreadsheet(ss.getId()).onFormSubmit().create()
  }
}

这有助于防止您为给定函数创建多个触发器。

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}

这可能是使电子邮件发生的简单方法。

function emailme(e) {
  var keys =Object.keys(e.namedValues);
  var msg="";
  for(key in e.namedValues) {
    msg+=Utilities.formatString('\n%s: %s ',key,e.namedValues[key]);
  }
  GmailApp.sendEmail('your email address', "Form submission", msg)
}

Gmail 参考

运行一次,将 emailme 脚本与 onFormSubmit 触发器链接起来。

function makeTrigger() {
  createOnFormSubmitTrigger('emailme')
}