如何在处理函数中修改全局变量(类型:数组)

时间:2012-08-28 19:24:14

标签: google-apps-script

我有一个以下格式的数组:

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');

我做错了还是有更好的方法?任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

Cache类适用于字符串。您必须使用Utilities.jsonStringifyUtilities.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 documentationvalue参数的类型为var而不是String,因此不明显,但确实如此。