当前位置: 首页 > 知识库问答 >
问题:

访问谷歌表单从应用程序脚本绑定到相同的谷歌电子表格

锺离珂
2023-03-14

我有一个谷歌电子表格,我用它创建了一个谷歌表单。电子表格有两张表:一张有表单响应,另一张有配置数据。电子表格附带了一个表单响应触发的应用程序脚本,该脚本使用配置数据进行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个答案

霍浩皛
2023-03-14

您应该为onEdit()安装触发器。当使用onEdit()中需要授权的方法时,它必须作为触发器安装。运行此脚本时,可以安装onEdit()的触发器。也可以手动安装。你可以在这里和这里阅读触发器。

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

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

 类似资料:
  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 我想实现什么? 我想跟踪一个谷歌文档的审查状态与谷歌表单与下拉选项为"要做,进行中,完成"。我有谷歌表单项目作为"URL的文档,状态"。我已经创建了一个谷歌表单模板,我将使用它为各种用户创建表单。我希望能够创建模板表单的副本,并从谷歌应用程序脚本中设置预定义的"URL"值,以便用户只需选择文档的状态。 我试过什么? 我在这个答案中遇到了createResponse()方法,但这需要用于保存响应,并

  • 试图复制整个电子表格,但我想没有api可以这样做。 基本上,我正在尝试做以下工作: 有一个电子表格,我想对其进行小的更改。 创建一个新的电子表格,将模板中的所有表格逐个复制到新的电子表格中(电子表格复制会更有效率) 创建新的电子表格工作正常,但从电子表格复制表格不起作用。 尝试了两种方法: 角: 给出以下错误: 对飞行前请求的响应未通过访问控制检查:无“访问控制允许原点” Google Sheet

  • B页中有图表,其中有源数据。我想以这样一种方式将图表导入到主电子表格B中,当图表在表格B中更改时,它也应该在主表格A中动态更改。 经过大量的研究,我能够找到以下内容: Importrange-只导入数据,而不是图表 复制图表本身并将其粘贴到主工作表A,但当图表在工作表B中动态变化时,它不会更改。 发布图表并将URL作为图像插入-如果主表A是google电子表格,则不起作用,但适用于google文档

  • 我希望每天凌晨1点从外部来源将一些数据输入到谷歌的工作表中。进口产品的数量将有所不同。 然后,我希望在数据上传完成后,按价格对数据进行排序,这将是凌晨1:05左右。 我看到它是可能的运行功能为谷歌工作表在一个时间的基础上。 我需要什么样的脚本来按价格对数据进行排序,所以最便宜的项目是每天早上运行脚本后的第2行。 要在Google Sheets中手动执行此操作,我会这样做-*突出显示第2行到数据,排

  • 假设我有在在我的电子表格中,我想创建一个自定义的Google Apps脚本(例如。)返回url部分这个领域。我要怎么做才能让它起作用? 每当我创建一个像这样的自定义脚本 我得到的只是链接的描述,在这种情况下是“谷歌”。 有没有办法让它真正起作用?