如何将 Google Apps 脚本的范围缩小到特定文件
How to narrow scopes for Google Apps Script to specific files
主要问题:
我有两个 Google 电子表格:一个模板和一个母版。
模板被发送给人们制作副本、填写,然后我有一个脚本可以将他们的选项卡复制到主电子表格。
目前权限非常广泛-可以查看、编辑、删除所有用户的电子表格。由于只涉及两个文件,我想将范围缩小到这两个,主要是因为授权过程现在对用户来说看起来很粗略。
有没有办法限制特定电子表格与所有电子表格的范围?
到目前为止我found/researched:
看来您可以轻松地将范围限制在当前文件,或要求访问所有电子表格。
我找到了两种方法:
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
代码和潜在想法:
我还没有尝试过白名单 - 这有帮助吗?我会将模板中的主电子表格列入白名单吗?
我尝试'@OnlyCurrentDoc'时的授权定义权限为'View and manage spreadsheets that this application has been installed in'。我可以在我的主电子表格中安装此应用程序并让他们交谈吗?有什么想法吗?
//这几乎是唯一适用的代码:
var admin_ss = SpreadsheetApp.openById([ID]);
var this_ss = SpreadsheetApp.getActiveSpreadsheet();
可能的方法:
CurrentOnly 范围:
https://www.googleapis.com/auth/spreadsheets.currentonly
- 您可以通过发布脚本或
将其作为附加组件安装在许多工作表中
- 在主电子表格中发布网络应用程序。您可以创建一个
doPost()
函数来接收和授权从从电子表格写入主电子表格的任何请求。
Drive.file 范围:
https://www.googleapis.com/auth/drive.file
- 您可以使用此范围访问此项目的任何文件 created/opened。
- 您可以创建一个网络应用程序以用户身份执行,并从主电子表格创建从属电子表格。大师需要分享给用户或
- 使用 Google picker/web 应用程序让用户手动 choose/open master/slave 电子表格以仅向这些工作表提供对应用程序的访问权限。
参考文献:
主要问题:
我有两个 Google 电子表格:一个模板和一个母版。
模板被发送给人们制作副本、填写,然后我有一个脚本可以将他们的选项卡复制到主电子表格。
目前权限非常广泛-可以查看、编辑、删除所有用户的电子表格。由于只涉及两个文件,我想将范围缩小到这两个,主要是因为授权过程现在对用户来说看起来很粗略。
有没有办法限制特定电子表格与所有电子表格的范围?
到目前为止我found/researched:
看来您可以轻松地将范围限制在当前文件,或要求访问所有电子表格。
我找到了两种方法:
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
代码和潜在想法:
我还没有尝试过白名单 - 这有帮助吗?我会将模板中的主电子表格列入白名单吗?
我尝试'@OnlyCurrentDoc'时的授权定义权限为'View and manage spreadsheets that this application has been installed in'。我可以在我的主电子表格中安装此应用程序并让他们交谈吗?有什么想法吗?
//这几乎是唯一适用的代码:
var admin_ss = SpreadsheetApp.openById([ID]);
var this_ss = SpreadsheetApp.getActiveSpreadsheet();
可能的方法:
CurrentOnly 范围:
https://www.googleapis.com/auth/spreadsheets.currentonly
- 您可以通过发布脚本或 将其作为附加组件安装在许多工作表中
- 在主电子表格中发布网络应用程序。您可以创建一个
doPost()
函数来接收和授权从从电子表格写入主电子表格的任何请求。
Drive.file 范围:
https://www.googleapis.com/auth/drive.file
- 您可以使用此范围访问此项目的任何文件 created/opened。
- 您可以创建一个网络应用程序以用户身份执行,并从主电子表格创建从属电子表格。大师需要分享给用户或
- 使用 Google picker/web 应用程序让用户手动 choose/open master/slave 电子表格以仅向这些工作表提供对应用程序的访问权限。