2

这篇文章中,我建议将Container Extension代码ScriptDB用作全局数据的中间存储。我为我的答案编写了一个示例代码,但该示例在一行中抛出了异常。我创建了以下更简单的示例来演示该问题。代码和函数都可以通过在编辑器中运行来使用。通过按下电子表格对话框中的按钮,可以毫无问题地执行该功能。该功能无处不在。error: You do not have permission to call query (line X)ScriptDb.getMyDb().query(...);getDBSizegetSourceScriptDBgetDBSizeRunScript ManagergetSource

我发布了示例的电子表格 -链接。无法共享代码以供查看,但可以将其输出到一个单元格中,该单元格B3包含以下代码。

如何允许电子表格代码访问ScriptDB

function getDBSize() {
  var db = ScriptDb.getMyDb(); 
  var result = db.query({});  
  var count = result.getSize();
  return count;
}

function getSource() {
  return this.toSource();
}
4

1 回答 1

1

问题是您试图将此函数作为电子表格运行,并且自定义函数比您链接的Container Extensioncustom function页面上的所有示例更受限制。

但是,从理论的角度来看,自定义函数以及简单的事件处理程序(例如onEditonOpen),不能访问任何需要用户帐户或与用户相关联的东西,只能访问“通用”方法。例如UrlFetchApp,打开当前电子表格,或阅读ScriptProperties

因此,在论文中,查询 aScriptDb应该是可能的,因为它是一个通用调用并且与活动用户无关,它类似于ScriptProperties. 我没有看到实际上可以让您查询数据库的解决方法,但您可以使用它ScriptPropertiesScriptDb您可以使用JSON.stringify和轻松保存和检索要保存的任何对象.parse。当然,我不是将ScriptDb功能与进行比较ScriptProperties,这只是一种解决方法。

无论如何,这似乎是我们问题跟踪器增强请求的一个很好的候选者。

于 2012-10-19T19:18:58.173 回答