2015年6月10日水曜日

Google Apps Scriptでキャッシュを使ってみる

Google Apps Scriptのキャッシュが
簡単に使えそうだったのでやってみました


種類は以下の3種類のようです。
違いはリンク先のリファレンスで確認してください
  • getDocumentCache()
  • getScriptCache()
  • getUserCache()
  • ───────────────────────────
    ちなみにgetPublicCache() は今後は使用不可になるのかな?
    リファレンスのサンプルコードにはまだ載ってますし使用可能でした

    下記のサンプルはREDというキーから
    Appleというデータをキャッシュから取得します
    キャッシュにデータがあればそのままログ出力し
    なければキャッシュに保持するというものです
    var cachedata = CacheService.getScriptCache();
    function myFunction() {
      var key = "RED";
      //cachedata.remove(key); //キャッシュ削除
      
      var sbuf = suna_cache.get(key);
      if (sbuf === null){
        //キャッシュに無いから保持
        sbuf = "Apple";
        suna_cache.put(key,sbuf);
      }
      Logger.log(sbuf);
     
    }
    //関数でもいいけどなんとなくクラス的なものにした
    var suna_cache = {
      put: function(key,data){
        cachedata.put(key,data,60*60*24); //24時間保持します。7日間が最大?のようです。
      },
      get: function (key){
         return cachedata.get(key);
      }
    };
      
    時間内はずっと使える連想変数みたいですね
    getDocumentCache()を使用してSpreadSheetに変化が少ないマスタのような
    データを保持している場合などは
    非常に有効になるんじゃないでしょうか
    たぶん配列で入るのか・・な?やったことないので時間があればやってみたいと思います
    キャッシュは便利な反面、バグを含んだままキャッシュに保持すると
    時間内はキャッシュがクリアされない限りバグったままになるので
    取り扱いは注意が必要です