在线编写脚本时 JavaScript 变量(或结构化数据)到 google 工作表?除了功能之外还有什么吗?

JavaScript variable (or structured data) to google sheets when scripting online? Anything beyond Functions?

我们可以在 javascript 中编写自定义函数,我们从 Google Sheets 标准 GUI 调用它们:例如

=myFunction(a, b, 'c')

但是有没有一种方法可以直接访问数据结构,而不是通过函数? 例如,我想要一些结构化的 javascript data/objects,并在不使用函数方法的情况下检索如下所示的数据?

=friends['mike'].birthday

不,不支持。您只能从 Google 表格访问使用 function 声明的非私有函数。查看 "custom functions guide" 以了解确切的限制。

此外,没有对全局变量的持久修改,因为每次调用都来自您的文字项目文本定义的 "clean slate"。因此,在您的示例中,您的 "friends" 对象需要完全静态才能使用,或者需要是由访问函数实例化的非全局对象,例如从 CacheServicePropertiesService 反序列化,或从某个远程端点加载。


var friends = {
  "mike": {
    birthday: new Date("..."),
     ...
  },
  ...
};
function FRIENDINFO(friend, property) {
  if (friends[friend]) {
    return friends[friend][property];
  }
  return "No friend named " + friend;
}

请注意,在自定义函数中使用 PropertiesServiceCacheServiceUrlFetchApp 会很快导致性能不佳和违反配额,除非您将函数设计为范围输入和范围输出。

最后,即使您动态加载数据,自定义函数的结果也应该是确定性的,即仅取决于输入函数参数。所以即使你的后台数据更新了,也不需要自定义函数输出的显示数据更新。