如何将 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 电子表格以仅向这些工作表提供对应用程序的访问权限。

参考文献: