所以我在使用谷歌电子表格和应用程序脚本编写的应用程序中遇到了问题。我已经整理了一个分步指南来重现它。
总结: 任何使用 SpreadsheetApp.openByUrl() 和 SpreadsheetApp.openById() 的脚本在从脚本编辑器内部调用时都可以正常工作,但从内部调用时会出现错误,即使是包含该脚本的同一个电子表格。
错误信息:
错误 您无权执行该操作。(线 ?)。
重现它的步骤:
粘贴此代码
功能演示1(){ 返回“猫”; } 功能演示2(){ 返回 [["bob", "fred"], ["x", "y"]]; } 功能演示3(){ Logger.log("demo3-1") ss = SpreadsheetApp.openByUrl("[==URL==]") 名称 = ss.getName() Logger.log("demo3-2" + 名称) 返回名称 } 功能演示4(){ Logger.log("demo4-1") ss = SpreadsheetApp.openById("[==id==]") 名称 = ss.getName() Logger.log("demo4-2" + 名称) 返回名称 }
将“[==URL==]”和“[==id==]”更改为引用您自己的文档
保存脚本
从运行菜单中选择demo1。这将引发一个关于权限的问题。授予它所要求的特权。(要求访问您的 Google 云端硬盘)
回到电子表格本身
将以下单元格设置为具有这些公式:
A1:=演示1() C2:=演示2() F1:=演示3() h1:=演示4()
请注意,前两个工作,因此电子表格看到脚本项目并能够从中运行代码(因此它有权从该脚本运行代码)但后两个不起作用并抱怨它没有权限执行那个动作。
那么我该如何解决这个问题?我做错了什么还是有潜在的问题?