在this post中,我建议使用ScriptDB
作为Container Extension代码全局数据的中间存储。我为我的答案编写了一个示例代码,但样本会在error: You do not have permission to call query (line X)
行中引发ScriptDb.getMyDb().query(...);
异常。我创建了以下更简单的示例来演示问题。代码({1}}和getDBSize
函数都允许在编辑器中运行getSource
。通过按电子表格ScriptDB
对话框中的getDBSize
按钮,可以毫无问题地执行Run
功能。 Script Manager
功能无处不在。
我发布了示例的电子表格 - link。无法共享视图代码,但可以在单元格中输出代码,单元格getSource
包含完全相同的代码。
如何允许电子表格代码访问B3
?
ScriptDB
答案 0 :(得分:1)
问题是您尝试将此功能作为电子表格custom function
运行,自定义功能比您链接的Container Extension页面上的所有示例更受限制。
但是,从理论的角度来看,自定义函数以及简单的事件处理程序(例如onEdit
,onOpen
)无法访问需要用户帐户或与用户关联的任何内容,只有“通用”方法。例如,UrlFetchApp
,打开当前电子表格,或阅读ScriptProperties
。
因此,在论文中,查询ScriptDb
应该是可能的,因为它是一个通用调用并且与活动用户无关,它类似于ScriptProperties
。我没有看到实际上允许您查询数据库的解决方法,但您可以使用ScriptProperties
代替。您可以使用ScriptDb
和JSON.stringify
轻松保存并检索要在.parse
上保存的任何对象。当然,我不是将ScriptDb
功能与ScriptProperties
进行比较,而只是一种解决方法。
无论如何,这似乎是我们issue tracker上的增强请求的良好候选者。