よく忘れて、毎回探しに行くので、メモ。
使い方
オブジェクトの取得
とりあえず、スクリプトキャッシュ。
var cache = CacheService.getScriptCache();
キャッシュへの投入
put(キー, 値, 保持期限(秒))
cache.put('test_key', 'test_value', 60 * 60 * 6);
キャッシュからの取得
get(キー)
var cache_value = cache.get('test_key');
キャッシュから削除
remove(キー)
cache.remove('test_key');
備考
スコープ
項目 | スコープ |
---|---|
getDocumentCache() | ドキュメント |
getScriptCache() | スクリプト |
getUserCache() | 現在のユーザとスクリプト |
制限および割り当て
項目 | 内容 |
---|---|
キーの長さ | 250文字 |
値のサイズ | 100KB |
保持期限 | 6時間 |
処理時間の計測
数バイトのキーおよび値で計測した結果。
スプレッドシート等へのアクセス時間を考えると、非常に高速。
回数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Avg. |
---|---|---|---|---|---|---|---|---|---|---|---|
Get cache object(ms) | 2 | 2 | 2 | 3 | 3 | 3 | 2 | 3 | 3 | 2 | 3 |
Remove key from cache(ms) | 90 | 145 | 88 | 56 | 102 | 98 | 100 | 61 | 90 | 51 | 88 |
Put value to cache(ms) | 52 | 51 | 57 | 57 | 55 | 61 | 56 | 60 | 53 | 53 | 56 |
Get value from cache(ms) | 20 | 21 | 19 | 13 | 23 | 23 | 24 | 17 | 21 | 23 | 20 |
250文字のキーと、100KBの値で計測した結果。
上とほぼ一緒。特にデータサイズには依存しない模様。
回数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Avg. |
---|---|---|---|---|---|---|---|---|---|---|---|
Get cache object(ms) | 2 | 2 | 2 | 2 | 2 | 2 | 4 | 4 | 2 | 1 | 2 |
Remove key from cache(ms) | 55 | 91 | 91 | 100 | 91 | 94 | 98 | 93 | 97 | 92 | 90 |
Put value to cache(ms) | 52 | 52 | 57 | 62 | 60 | 58 | 66 | 54 | 54 | 59 | 57 |
Get value from cache(ms) | 22 | 21 | 21 | 21 | 23 | 23 | 28 | 24 | 22 | 20 | 23 |
その他
簡易的なデータ置き場として
保存期間が6時間、データサイズ100KBと、それなりの容量を使えますし、
データサイズによる処理時間の劣化もなさそうですので、一時的なデータ
置き場として色々と使い道がありそうです。
var obj = {
"key1": "test_value1",
"key2": "test_value2",
"key3": "test_value3",
"key4": "test_value4",
"key5": "test_value5",
"key6": "test_value6"
};
var cache = CacheService.getScriptCache();
cache.put('test_key', JSON.stringify(obj), 60 * 60 * 6);
var value = JSON.parse(cache.get('test_key'));
Logger.log(value);
Logger.log(value.key1);
実行結果:
[yy-mm-dd HH:MM:SS:000 PDT] {test_key3=test_value3, test_key5=test_value5, test_key4=test_value4, test_key2=test_value2, test_key1=test_value1, test_key6=test_value6}
[yy-mm-dd HH:MM:SS:000 PDT] test_value1