谷歌表单触发器的重用



我使用GAS自动创建一个表单,如下所示:

 var form = FormApp.create(form_name);
 ScriptApp.newTrigger('mysubmit')
 .forForm(form)
 .onFormSubmit()
 .create();

问题是,每次创建新表单时,它都会创建一个触发器。有没有办法重复使用同一个触发器?一个问题是,我的帐户可用的许多触发器很快就会用完。

如果您使用应用程序脚本创建表单,然后为该表单创建表单提交触发器,则您创建的触发器将附加到脚本,而不是新的表单。这就是您遇到20个触发器/用户/脚本配额限制的原因。

请记住,触发器依赖于脚本,而不是文档、工作表或表单。您可以使用脚本创建新表单,但不能使用脚本创建附加到该表单的新脚本(脚本无法创建其他脚本)。这意味着您无法以编程方式创建存在于另一个文档中的触发器。

您可以创建一个Forms插件,当创建一个新Form时,用户可以点击菜单控件为该Form创建一个表单提交触发器。

我的工作组但仍有20个触发限制存在

function install_submit_trigger(form, fids)
{
  var allTriggers = ScriptApp.getProjectTriggers();
  for(var i = 0; i < allTriggers.length; i++)
  {
    ScriptApp.deleteTrigger(allTriggers[i]);
  }
  for(var i in fids)
  {
    var fid = fids[i]; 
    try
    {
      ScriptApp.newTrigger('mysubmit')
               .forForm(FormApp.openById(fid.fid))
               .onFormSubmit‌​().create();
    }
    catch(e)
    {
      Logger.log("Error adding trigger: " + e);
    }
  }
  ScriptApp.newTrigger('mysubmit') .forForm(form) .onFormSubmit() .create();
}

最新更新