首页 文章

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

提问于
浏览
0

我有一个谷歌电子表格,我用它创建了一个谷歌表格 . 电子表格有两张:一张带有表单响应,另一张带有配置数据 . 附加到电子表格的是表单响应触发的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

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

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

    安装触发器后,再试一次 .

相关问题