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

Eas*_*ayB 4 permissions google-apps-script scopes google-oauth

主要问题:

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

该模板被发送给人们进行复制、填写,然后我有一个脚本将他们的选项卡复制到主电子表格中。

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

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

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

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

我找到了两种方法:

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();
Run Code Online (Sandbox Code Playgroud)

The*_*ter 8

可能的方法:

  • 当前仅范围:

    https://www.googleapis.com/auth/spreadsheets.currentonly
    
    Run Code Online (Sandbox Code Playgroud)
    • 您可以通过发布脚本或将其作为附加组件安装在许多工作表中
    • 在主电子表格中发布 Web 应用程序。您可以创建一个doPost()函数来接收并授权从从电子表格写入主电子表格的任何请求。
  • Drive.file范围:

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

参考: