Google Apps 脚本 -- 移动文件时出错:异常:访问被拒绝:DriveApp。但所有权限都已设置

问题描述 投票:0回答:1

这里是初学者程序员。一直在寻找优化我的小型辅导业务的方法,我正在寻找的方法之一是自动将文件移动和排序到给定名称的学生文件夹中。我正在 Google 表格中运行标题为“=moveJamboardsToStudentFolder(E2)”的公式。函数“moveJamboardsToStudentFolder”在 Google Apps 脚本中定义。看来我的代码按预期工作(使用记录器语句检查),除了以下错误:

  1. 在 Google 表格中:

异常:您无权调用 DriveApp.getFoldersByName。所需权限:(https://www.googleapis.com/auth/drive.readonly || https://www.googleapis.com/auth/drive)(第 6 行)。

  1. 在应用程序脚本中:

4:27:46AM 信息 移动文件时出错:Aadi 1/2。异常:访问被拒绝:DriveApp。 4:27:47AM 信息 移动文件时出错:1/3 Aadi。异常:访问被拒绝:DriveApp。 4:27:47AM 信息 移动文件时出错:Aadi 12/26。异常:访问被拒绝:DriveApp。

此处,“Aadi”是使用的测试学生姓名。成功找到上面3个文件,目标文件夹也成功找到。唯一失败的步骤是实际权限。

我查了很多资料,但没有多大帮助——大多数解释都超出了我的理解范围。我尝试在 appscripts.json 文件中手动输入“oauthScopes”,但在其他检查中没有成功。

有人知道为什么权限会受到阻碍吗?所有正在移动的文件都归我所有,并且驱动器权限已在弹出屏幕中给出。

google-apps-script google-sheets google-drive-api access-denied
1个回答
0
投票

您无法直接从 Google 表格中的自定义函数运行需要高级 Google 服务(例如访问 DriveApp)的 Google Apps 脚本。表格中的自定义函数设计得很简单,只能访问使用它们的电子表格中的数据。他们无权执行访问用户的 Google 云端硬盘等操作。

这就是为什么您的脚本从 Apps 脚本运行而不是从表格运行。

要解决此问题,您可以,例如:

  1. 使用触发器: 您可以设置时间驱动触发器或事件驱动触发器(如表单提交或编辑时)来执行函数,而不是直接将函数作为工作表中的自定义公式调用。

  2. 创建自定义菜单:将自定义菜单添加到运行脚本的 Google Sheets UI。然后,用户可以通过单击此菜单项来执行脚本。这样,脚本就可以在用户授权的情况下运行,其中可以包括访问云端硬盘所需的权限。

具体细节取决于您的用例和工作表设置。

© www.soinside.com 2019 - 2024. All rights reserved.