我有一个以下格式的数组:
agendaItems = [{“topic”:“blah”,“description:”blah“},{”topic“:”blah2“,”description“:”blah2“}]。
我需要在处理程序中更新此数组中的值,处理程序不允许修改全局变量。我知道我必须使用CacheService或ScriptProperties。但是,我似乎无法使其发挥作用:
如果我使用CacheService,我会得到这样的结果:“[object oject] [object object]”
CacheService.getPublicCache.put('agenda', agendaItems);
如果我使用ScriptProperties,我得到这样的东西:“”[Ljava.lang.Object; @ 429bd3a7“
ScriptProperties.setProperty('agenda', agendaItems');
我做错了还是有更好的方法?任何建议都表示赞赏。
答案 0 :(得分:1)
Cache类适用于字符串。您必须使用Utilities.jsonStringify和Utilities.jsonParse方法将数组转换为字符串,反之亦然。这是我使用的稍微修改过的代码
this.getData = function(id, cacheKey) {
var cache = CacheService.getPrivateCache();
var cachedString = cache.get(cacheKey);
var lstData;
if (cachedString == null) {
lstData = getNotCachedData_(id);
cache.put(cacheKey, Utilities.jsonStringify(lstData));
}
else {
lstData = Utilities.jsonParse(cachedString);
}
return lstData;
}
ScriptProperties服务也适用于字符串。由于not complete documentation,value
参数的类型为var
而不是String
,因此不明显,但确实如此。