2

次の形式の配列があります。

アジェンダアイテム = [{"トピック":"何とか", "説明:"何とか"}, {"トピック":"何とか2", "説明":"何とか2"}].

ハンドラーでこの配列の値を更新する必要がありますが、ハンドラーはグローバル変数を変更できません。CacheService または ScriptProperties のいずれかを使用する必要があることはわかっています。しかし、私はそれを機能させることができないようです:

CacheService を使用すると、「[オブジェクト オブジェクト][オブジェクト オブジェクト]」のような結果が得られます。

CacheService.getPublicCache.put('agenda', agendaItems);

ScriptProperties を使用すると、次のような結果が得られます: ""[Ljava.lang.Object;@429bd3a7"

ScriptProperties.setProperty('agenda', agendaItems');

私はこれを間違っていますか、それともより良い方法がありますか? アドバイスをいただければ幸いです。

4

1 に答える 1

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 Service は、文字列でも機能します。ドキュメントが完全ではないため、明らかではありません。valueパラメーターには型があり、型はvarありませんStringが、本当です。

于 2012-08-28T19:40:58.447 に答える