0

我在尝试在 Google Apps 脚本中查询资源文件的 ScriptDb 时遇到问题。我创建了一个脚本文件(file1),将其作为资源添加到另一个脚本文件(file2)。我从 file2 调用 file1 以返回其 ScriptDb 的句柄。这工作正常。然后我尝试查询 ScriptDb,但返回了权限错误。

这两个文件都属于同一用户并在同一谷歌环境中

请参见下面的代码:

文件 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 要求重新授权,但尚未成功。我尝试添加一个新功能并运行它,因此我们将不胜感激地收到任何建议。

在此先感谢克里斯

4

2 回答 2

0

我已经弄清楚了问题所在,这是我对授权的误解。我是从文件权限的角度考虑的,而实际上这个问题是我的代码没有被授权运行 DbScript 服务。当我的代码调用不同的文件并接收回指向 ScriptDb 数据库的指针时,它没有使用 ScriptDb 服务,因此当它调用 db.query() 时,它会调用未经授权的 ScriptDb 服务。

为了解决这个问题,我只需要创建一个虚拟函数并进行 ScriptDb.getMyDb() 调用,这会触发对服务的授权。然后代码运行良好。

感谢您的输入。克里斯

于 2013-06-26T18:05:03.647 回答
0

file1/line2 中似乎有错误。它说“返回 ScriptDb.getMyDb;” 但它应该说“return ScriptDb.getMyDb();”

如果您省略 ()s,那么当您将 file1 作为库调用时,file1.getMyDb() 将返回一个您存储在 var db 中的函数。然后 var result = db.query({.................}) 行导致错误,因为函数中没有方法“查询”。

那是导致您的错误的原因吗?

于 2013-06-14T07:58:59.223 回答