#概要
値を保存する手段としてSpreadsheet, Propertie, Cache などの方法がありますが、今回はCacheについてです。
以下ぞれぞれの特徴です。
-
Spreadsheet Service
- https://developers.google.com/apps-script/reference/spreadsheet
- 沢山のデータを永続的に保存できる
- アクセスは遅い
- GoogleDriveから閲覧編集できる
- 基本配列
- ちょっとした保存とかには面倒
-
PropertiesService
- https://developers.google.com/apps-script/reference/properties/properties-service
- 小さなデータを永続的に保存できる
- アクセスは早い
- GASのメニューから値がKey,Valueで見れる
- 保存時に文字列に変換される
- 永続的で便利だが大きなデータは保存できない
-
Cache Service
- https://developers.google.com/apps-script/reference/cache
- 比較的大きなデータ(100KB)を一時的に保存(最長6時間)できる
- アクセスは早い
- keyとvalue.値はGUIから多分見れない(多分)
- 保存時に文字列に変換される
CacheはリファレンスにもありますがRSSの更新確認のためなどに使うには便利そうです。
前回の実行時間の確認やデータの引き継ぎなどの一時的なデータは文字通りキャッシュを利用したほうが良さそうです。
#Cache Serviceサンプルプログラム
データは保存時に文字列に変換されてしまいます。ラップしてJSONで変換するほうが使いやすそうです。
function makeCache() {
const cache = CacheService.getScriptCache();
return {
get: function(key) {
return JSON.parse(cache.get(key));
},
put: function(key, value, sec) {
//リファレンスよりcache.putの3つ目の引数は省略可。
//デフォルトでは10分間(600秒)保存される。最大値は6時間(21600秒)
cache.put(key, JSON.stringify(value), (sec === undefined) ? 600 : sec);
return value;
}
};
}
function test3() {
const cache = makeCache();
Logger.log(cache.put('array',[1,2]))
Logger.log(typeof cache.get('array'))
Logger.log(cache.put('number',256))
Logger.log(typeof cache.get('number'))
Logger.log(cache.put('string','test'))
Logger.log(typeof cache.get('string'))
Logger.log(cache.put('date', new Date()))
Logger.log(typeof cache.get('date'))
Logger.log(cache.put('object',{a:[1,2], b:1, c:'test'}))
Logger.log(typeof cache.get('object'))
}
/*以下 ログ
[19-11-03 14:41:56:238 JST] [1.0, 2.0]
[19-11-03 14:41:56:278 JST] object
[19-11-03 14:41:56:340 JST] 256.0
[19-11-03 14:41:56:381 JST] number
[19-11-03 14:41:56:428 JST] test
[19-11-03 14:41:56:456 JST] string
[19-11-03 14:41:56:511 JST] Sun Nov 03 14:41:56 GMT+09:00 2019
[19-11-03 14:41:56:560 JST] string
[19-11-03 14:41:56:623 JST] {a=[1.0, 2.0], b=1.0, c=test}
[19-11-03 14:41:56:637 JST] object
*/