我在尝试在Google Apps脚本中查询资源文件的ScriptDb时遇到问题。我创建一个脚本文件(file1),将其作为资源添加到另一个脚本文件(file2)。我从file2调用file1来返回其ScriptDb的句柄。这很好用。然后我尝试查询ScriptDb但返回了权限错误。
两个文件由同一用户拥有并位于相同的Google环境中
见下面的代码:
文件1:
function getMyDb() {
return ScriptDb.getMyDb;
}
文件2(引用文件1):
function getDataFromFile1() {
var db = file1.getMyDb(); // This works
var result = db.query({..............}); // This results in a permissions error!
}
我无法理解为什么我可以访问file1并获取ScriptDb上的句柄,但由于权限问题,我无法查询它。
我试图强制file1要求重新授权,但尚未成功。我尝试添加一个新功能并运行它,所以任何建议都会感激不尽。
提前致谢 克里斯
答案 0 :(得分:0)
file1 / line2中似乎有错误。它说“返回ScriptDb.getMyDb;”但它应该说“return ScriptDb.getMyDb();”
如果省略()s然后当你将file1作为库调用时,file1.getMyDb()将返回一个存储在var db中的函数。然后行var result = db.query({..............})会导致错误,因为函数中没有方法“query”。
这是导致错误的原因吗?
答案 1 :(得分:0)
我已经弄清楚问题是什么,我对授权的误解。我在文件权限方面考虑过它,实际上问题是我的代码没有被授权运行DbScript服务。当我的代码调用另一个文件并收到一个指向ScriptDb数据库的指针时,它没有使用ScriptDb服务,因此当它调用db.query()时,它会调用ScriptDb服务,但它没有被授权。
要解决这个问题,我只需要创建一个虚拟函数并进行ScriptDb.getMyDb()调用,这会触发对服务的授权。然后代码工作正常。
感谢您提供的意见。 克里斯