我有一个非常适合我的 Google Apps 脚本。与该工作表共享的其他尝试使用它的人会收到以下消息:
您无权执行该操作。请问楼主
此项目授予您访问权限。
该脚本用于使用新数据行更新现有工作表。它是使用添加到 UI 的菜单项触发的,并执行以下操作:
- 在 GDrive 文件夹中查找 .xlsx 文件(该文件由 Web 服务导出并由我们手动放入 GDrive 文件夹中,我们无法控制文件的内容或其格式)
- 使用 UrlFetchApp (uploadType=media&convert=true) 将文件从 .xlsx 转换为 .gsheet
- 使用 UrlFetchApp 更改生成的 .gsheet 的文件名和文件夹位置。文件夹位置现在与 .xlsx 文件的位置匹配(使用 UrlFetchApp 转换文件时,生成的文件似乎放置在 GDrive 的根目录中)
- 使用 DriveApp 获取 .gsheet,然后打开它以供脚本访问
- 使用列标题作为行中每个元素的键将 .gsheet 中的所有数据存储到二维数组中
- 将目标工作表中现有数据的所有 ID 值(唯一)存储到一维数组中
- 比较两个数组,并从二维数组中删除包含与一维数组中的 ID 匹配的 ID 的任何行,只在二维数组中留下新数据
- 循环遍历二维数组的每一行,然后遍历目标工作表的每一列,将二维数组行中的数据添加到目标工作表中数据底部的新行,使用列标题的值作为键每个元素
我知道代码没有问题,因为它对我来说工作得很好,所以它一定是权限问题,但我不知道如何解决。该工作表与他们共享,并且存储文件的 GDrive 文件夹也与他们共享。当我第一次自己运行脚本时,我必须授予脚本访问 GDrive 文件夹的权限,显然现在已经完成了。
我是我们小组的开发人员,而不是数据的用户,但 atm 我必须在每次需要时运行脚本来为用户更新数据,而不是他们自己做,这是......恼人的。
非常感谢任何试图找出问题所在的帮助。
EDIT:再次阅读本文,我发现当文件转换时,首先将其保存到 GDrive 根目录,这就是为什么我必须更改文件夹。作为根用户,它不会与该文件的用户共享。难道是这个原因吗?如果是这样,我该如何解决这个问题?我可以在转换时指定结果文件应保存到哪个文件夹吗?
要解决此问题,您需要将脚本部署为 Web 应用程序(这个想法来自 @MarioR 答案,但设置不同):
- 使用所有者帐户,打开工作表,然后打开脚本编辑器
- 点击
Publish
进而Deploy as web app
- For
Execute the app as
, 选择User accessing the web app
并为Who has access to the app
, 选择Anyone
用户第一次尝试使用该脚本时,他们必须允许该脚本(如果他们得到This app isn't verified
,他们应该点击Advanced
在底部,然后Go to <script name> (unsafe)
)。此后,他们可能需要刷新工作表才能运行脚本。
如果所有者将工作表共享给新用户,则在将脚本部署为 Web 应用程序后,新用户可能需要等待 15 分钟(左右)才能授权该脚本(同时该用户将继续获得红色警告)。
只有所有者才能部署为 Web 应用程序,尝试执行此操作的其他用户不会收到消息错误,只会收到弹出窗口Fetching Data
永远被困住!)
要更改所有者:打开包含所有者帐户的工作表,单击Share
> Advanced
> 单击触发“未来所有者”旁边下拉菜单的箭头 >Set as owner
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)