主要问题:
我有两个谷歌电子表格:一个模板和一个母版。
模板被发送给人们进行复制、填写,然后我有一个脚本将他们的选项卡复制到主电子表格。
目前,权限非常广泛 - 查看,编辑,删除所有用户的电子表格。 由于只涉及两个文件,我想将范围缩小到这两个,主要是因为授权过程现在对用户来说看起来很粗略。
有没有办法将范围限制为特定电子表格而不是所有电子表格?
到目前为止,我的发现/研究:
似乎您可以轻松地仅将范围限制为当前文件,或要求访问所有电子表格。
我找到了两种方法:
1( 仅电流 将此添加到脚本顶部:
/** * @OnlyCurrentDoc */这意味着我无法将选项卡复制到主电子表格。
2( 设置显式范围 进入清单,如下所述: https://developers.google.com/apps-script/concepts/scopes 似乎这也只允许当前文件或完整的电子表格访问。
类似问题:
其他人也问过类似的问题,但没有得到这个特定问题的答案,因为有多个特定的文件存在问题。
从自己的驱动器访问文件时如何使用较窄的Google Apps脚本授权范围
如何缩小谷歌应用脚本的身份验证/驱动器范围?
代码和潜在想法:
我还没有尝试过白名单 - 这有帮助吗?我会将模板上的主电子表格列入白名单吗?
我尝试"@OnlyCurrentDoc"时的授权将权限定义为"查看和管理已安装此应用程序的电子表格"。 我可以在我的主电子表格中安装此应用程序并让他们交谈吗? 有什么想法吗?
这几乎是唯一适用的代码:
var admin_ss = SpreadsheetApp.openById([ID]);
var this_ss = SpreadsheetApp.getActiveSpreadsheet();
可能的方法:
-
仅限当前范围:
https://www.googleapis.com/auth/spreadsheets.currentonly
- 您可以通过发布脚本将其作为附加组件安装在许多工作表中,或者
- 在主电子表格中发布 Web 应用程序。您可以创建一个
doPost()
函数来接收和授权从属电子表格写入主电子表格的任何请求。
-
驱动器文件范围:
https://www.googleapis.com/auth/drive.file
- 可以使用此范围访问使用此项目创建/打开的任何文件。
- 您可以创建以用户身份执行的 Web 应用程序,并从主电子表格创建从属电子表格。主节点需要共享给用户或
- 使用 Google 选取器/网络应用程序使用户手动选择/打开主/从电子表格,以仅向这些工作表提供对应用程序的访问权限。
引用:
- 添加仅当前范围
- 网页应用指南
- OAuth 范围列表
- 谷歌选择器