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



主要问题:

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

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

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

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

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

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

我找到了两种方法:

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 范围列表
  • 谷歌选择器

最新更新