如何将 Google Apps 脚本的范围缩小到特定文件

Posted

技术标签:

【中文标题】如何将 Google Apps 脚本的范围缩小到特定文件【英文标题】:How to narrow scopes for Google Apps Script to specific files 【发布时间】:2019-12-25 02:43:43 【问题描述】:

主要问题:

我有两个 Google 电子表格:一个模板和一个母版。

模板被发送给人们制作副本并填写,然后我有一个脚本,可以将他们的标签复制到主电子表格。

目前授权范围很广——可以查看、编辑、删除所有用户的电子表格。由于只涉及两个文件,我想将范围缩小到这两个,主要是因为授权过程现在对用户来说看起来很粗略。

有没有办法限制特定电子表格与所有电子表格的范围?

到目前为止我发现/研究的内容:

您似乎可以轻松地将范围限制为当前文件,或要求访问所有电子表格。

我找到了两种方法:

1) 仅当前 将此添加到脚本的顶部: /** * @OnlyCurrentDoc */ 这意味着我无法将选项卡复制到主电子表格。

2) 设置显式范围 按照此处所述进入清单: https://developers.google.com/apps-script/concepts/scopes 似乎这也只允许当前文件或完整的电子表格访问。

类似问题:

其他人也提出了类似的问题,但在涉及多个特定文件的特定问题上没有得到答案。

How to use narrower Google Apps Script Authorization Scope when accessing file from own drive

How to narrow down the auth/drive scope for a google apps script?

代码和潜在想法:

我还没有尝试过白名单 - 有帮助吗?我会将模板上的主电子表格列入白名单吗?

我尝试“@OnlyCurrentDoc”时的授权将权限定义为“查看和管理已安装此应用程序的电子表格”。我可以在我的主电子表格中安装这个应用程序并让他们说话吗?有什么想法吗?

//这几乎是唯一适用的代码:

var admin_ss = SpreadsheetApp.openById([ID]);

var this_ss = SpreadsheetApp.getActiveSpreadsheet();

【问题讨论】:

【参考方案1】:

可能的方法:

CurrentOnly 范围:

https://www.googleapis.com/auth/spreadsheets.currentonly
您可以通过发布脚本将其安装在许多工作表中作为附加组件,或者 在主电子表格中发布网络应用程序。您可以创建一个doPost() 函数来接收和授权从从属电子表格写入主电子表格的任何请求。

Drive.file 范围:

https://www.googleapis.com/auth/drive.file
您可以使用此范围访问使用此项目创建/打开的任何文件。 您可以创建一个 Web 应用程序以用户身份执行,并从主电子表格创建一个从电子表格。 Master 需要共享给用户或者 使用 Google 选择器/网络应用程序让用户手动选择/打开主/从电子表格,以便仅提供对这些工作表的应用程序访问权限。

参考资料:

Add on current only scope Web app guide OAuth scopes list Google Picker

【讨论】:

谢谢@TheMaster!我喜欢 drive.file 范围的想法。如果项目打开另一个电子表格(var admin_ss = SpreadsheetApp.openById("ID")),为什么该权限不允许访问? Web 应用程序和 Google 选择器有点超出我的能力,但我会弄明白的!! @EastBay 打开应该由用户使用选择器手动完成。或者,脚本应该已经创建了原始文件。 SpreadsheetApp.create() 如果需要,您可以手动/以编程方式在其中输入信息 啊,从原始文件创建模板非常有意义,并且很容易融入我的工作流程中。非常感谢!

以上是关于如何将 Google Apps 脚本的范围缩小到特定文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google Apps 脚本对范围启用数据过滤器

Google Apps 脚本 - 根据 for 循环匹配将数据范围移动到值 =“是”

Google Apps 脚本中数字的格式范围

我是否需要更改我的Apps脚本代码,因为Google+登录功能已被弃用?

如何使用 Google Apps 脚本将来自 Google 电子表格和 ScriptDB 的数据插入 BigQuery 表

将VBA转换为Google Apps脚本