通过缓存电子表格值提高脚本性能

2023-12-03

我正在尝试使用 Google Apps 脚本开发一个网络应用程序,将其嵌入到 Google 站点中,该站点仅显示 Google 表格的内容并使用一些简单的参数对其进行过滤。至少目前是这样。稍后我可能会添加更多功能。

我得到了一个功能齐全的应用程序,但发现过滤通常需要一段时间,因为客户端有时必须等待长达 5 秒才能得到服务器的响应。我认为这很可能是因为每次调用电子表格时我都使用 SpreadsheetApp 类按 ID 加载电子表格。

我决定将电子表格值缓存在我的doGet使用 CacheService 函数并每次从缓存中检索数据。

然而,由于某种原因,这意味着二维数组现在被视为一维数组。因此,当在 HTML 表中显示数据时,我最终得到一列,每个单元格都由一个字符占据。

这就是我实现缓存的方式;据我从 API 参考中可以看出,我没有做错任何事情:

function doGet() {
  CacheService.getScriptCache().put('data', SpreadsheetApp
                                  .openById('####')
                                  .getActiveSheet()
                                  .getDataRange()
                                  .getValues());

  return HtmlService
      .createTemplateFromFile('index')
      .evaluate()
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

function getData() {
  return CacheService.getScriptCache().get('data');
}

这是我第一次使用 GAS 开发合适的应用程序(我之前在 Sheets 中使用过它)。我是否缺少一些非常明显的东西?我在 CacheService 参考页面上没有看到任何类型限制...


CacheService 存储的是字符串,因此您的二维数组等对象将被强制转换为字符串,这可能无法满足您的需求。

使用 JSON 实用程序来控制结果。

myCache.put( 'tag', JSON.stringify( myObj ) );

...

var cachedObj = JSON.parse( myCache.get( 'tag' ) );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过缓存电子表格值提高脚本性能 的相关文章

随机推荐