gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:23:47 26 4
gpt4 key购买 nike

我正在尝试使用 Google Apps 脚本开发一个 web 应用程序以嵌入到 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 存储的是Strings,所以你的二维数组等对象会被强制为Strings,这可能不符合你的需求。

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

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

...

var cachedObj = JSON.parse( myCache.get( 'tag' ) );

关于caching - 通过缓存电子表格值提高脚本性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27527669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com