如何在 GAS 中请求用户读取文件的权限?

问题描述

我正在为表格开发 Google Apps 脚本插件,该插件已针对 drive.file 范围进行了验证。有一次我需要读取当前电子表格的父文件夹,以便我可以在其中创建文件。是否可以在没有 drive.readonly 范围的情况下执行此操作?我可以仅请求用户访问该文件夹吗?如果是这样,我该怎么做?

解决方法

如果您使用的是:
. . . googleapis.com/auth/drive.file
范围,那么您不需要也有 drive.readonly 范围。通过让用户使用 Google 文件/文件夹选择器,插件可以访问特定文件夹。因此,用户需要在代码运行之前使用选择器来访问该文件夹。未经用户授权,加载项无法访问文件夹。

  • 在 Google Cloud Platform 项目中启用 Google Picker API
  • 获取选择器的开发者密钥
  • 将 Google 选择器加载到脚本标记中的 HTML 中: <script src="https://apis.google.com/js/api.js?onload=onApiLoad"></script><!-- This is for the file picker - -->
  • 将您的客户端代码与选择器代码集成。例如。用于打开选择器的按钮
  • 配置选择器设置。为文件夹使用 MIME 类型:view.setMode(google.picker.DocsViewMode.LIST).setMimeTypes('application/vnd.google-apps.folder');
  • 处理选择器的返回值以获取文件夹 ID 并在需要时保存用户首选项。

见:
https://developers.google.com/picker/docs