Google Apps脚本ScriptDb权限问题

时间:2013-06-13 12:35:55

标签: permissions google-apps-script

我在尝试在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要求重新授权,但尚未成功。我尝试添加一个新功能并运行它,所以任何建议都会感激不尽。

提前致谢 克里斯

2 个答案:

答案 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()调用,这会触发对服务的授权。然后代码工作正常。

感谢您提供的意见。 克里斯