Permissions Google应用程序脚本ScriptDb权限问题

Permissions Google应用程序脚本ScriptDb权限问题,permissions,google-apps-script,Permissions,Google Apps Script,我在Google Apps脚本中试图查询资源文件的ScriptDb时遇到问题。我创建一个脚本文件(file1),将其作为资源添加到另一个脚本文件(file2)。我从file2调用file1以返回其ScriptDb的句柄。这个很好用。然后我尝试查询ScriptDb,但返回了一个权限错误 这两个文件都由同一用户拥有,并且位于同一google环境中 见下面的代码: 文件1: function getMyDb() { return ScriptDb.getMyDb; } 文件2(参考

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

这两个文件都由同一用户拥有,并且位于同一google环境中

见下面的代码:

文件1:

function getMyDb() {  
    return ScriptDb.getMyDb;  
} 
文件2(参考文件1):

我不明白为什么我可以访问file1并获得ScriptDb的句柄,但是由于权限问题,我无法查询它

我已尝试强制file1要求重新授权,但尚未成功。我试着添加一个新函数并运行它,所以任何建议都会得到感谢

提前谢谢
Chris

文件1/line2中似乎有错误。它说“return ScriptDb.getMyDb;”,但应该说“return ScriptDb.getMyDb();”

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


这就是导致您出错的原因吗?

我已经找出了问题所在,这是我对授权的误解。我考虑的是文件权限,而事实上问题是我的代码没有被授权运行DbScript服务。当我的代码调用另一个文件并接收回指向ScriptDb数据库的指针时,它没有使用ScriptDb服务,因此当它调用db.query()时,它会调用ScriptDb服务,但它没有得到授权

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

谢谢你的意见。
克里斯

这应该很好用。我无法重现这个问题。不过,file1上的授权与此无关。您应该检查文件2上的授权。你是怎么运作的?从脚本编辑器?也许您的查询有问题,您是否尝试过更简单的查询?你能和我们分享它的代码吗?嗨,亨里克,谢谢你的回复。我同意,这应该行得通,这就是为什么我有点困惑的原因。我试图通过另一个调用getDataFromFile1()的方法(在文件2中)使用调试器从脚本编辑器运行该函数。我尝试了一个更简单的查询,但没有成功。这是我的代码文件中失败的实际查询:var result=db.query({silo:“config”,area:“settings”,property:“custAdminName”});这是ScriptDb记录:{“area”:“settings”,“value”:“Alfred”,“property”:“custAdminName”,“silo”:“config”}感谢Chrissorry,没有意识到所有格式都会消失var result=db.query({silo:“config”,area:“settings”,property:“custAdminName”});{“区域”:“设置”,“值”:“阿尔弗雷德”,“属性”:“custAdminName”,“思洛”:“配置”}
function getDataFromFile1() {  
    var db = file1.getMyDb(); // This works  
    var result = db.query({..............}); // This results in a permissions error!  
}