从与相同Google电子表格相关联的Apps脚本访问Google表单

时间:2017-12-21 06:11:18

标签: google-apps-script google-sheets google-form

我有一个Google电子表格,我已经使用该电子表格创建了Google表单。电子表格有两张:一张带有表单响应,另一张带有配置数据。附加到电子表格的是表单响应触发的Apps脚本脚本,它使用配置数据进行API调用。这个脚本完全按照我的意愿运行。

我编写了电子表格更改触发的脚本,尝试更新其中一个表单问题的选项。但是,使用FormApp.openById或FormApp.openByUrl会失败并显示"您无权调用..."。

是否有某种方法可以为表单提供电子表格更改触发的脚本权限?

或者是否有更好的设置来满足我的需求:在表单和脚本之间保持信息同步,根据表单响应进行api调用?

代码:

function onEdit(e) {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // Do some work to get the configuration data.  This works fine.

  // Now try to get access to the form to update it
  var responseSheet = activeSpreadsheet.getSheetByName('Form Responses');
  // var form = FormApp.getActiveForm();  // returns null
  var form = FormApp.openByUrl(responseSheet.getFormUrl());
  ...
}

最后一行失败了:

  

执行失败:您无权调用openByUrl

1 个答案:

答案 0 :(得分:0)

您应该为onEdit()安装触发器。当在onEdit()中使用需要授权的方法时,必须将其安装为触发器。运行此脚本时,可以安装onEdit()的触发器。您也可以手动安装。您可以在herehere了解有关触发器的信息。

function installtrigger() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('onEdit')
      .forSpreadsheet(ss)
      .onEdit()
      .create();
}

安装扳机后,请重试。