var cache = CacheService.getPublicCache();これで、保管されているindexキャッシュが取り出せます。ただし、キャッシュが存在しない場合は、このgetされた値はnullになっています。そこで、indexキャッシュがnullかどうかで処理を分岐させています。
var index = cache.get("index");
return HtmlService.createHtmlOutput(index);たったこれだけで、キャッシュに保存されているHTMLコードをそのままページに出力されるようになります。――では、キャッシュがない場合はどうしているでしょうか。これが実は以外に面倒なのです。
var output = HtmlService.createTemplateFromFile('index');まず、index.htmlをもとにHtmlTemplateオブジェクトを作成します。そしてそこからevaluateでHtmlOutputオブジェクトを作成します。
index = output.evaluate();
cache.put("index", index.getContent(), 60 * 60 * 24);続いて、Cacheオブジェクトのputを使い、キャッシュを保存します。このとき注意すべきは、「indexをそのまま保存しない」という点です。evaluateで取得したindexは、HtmlOutputオブジェクトです。このオブジェクトから、getContentでテキストのコンテンツを取り出し、これを保存しなければいけません。これを忘れると、HtmlOutputというオブジェクト名のテキストがキャッシュされてしまいます。
return HtmlService.createHtmlOutput(index.getContent());最後にHtmlOutputを作成してreturnします。まぁ、output.evaluateした値をそのままreturnしてもいいのですが、キャッシュしたのと同じテキストから新たにHtmlOutputを生成しておきました。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
function doGet() { var cache = CacheService.getPublicCache(); var index = cache.get("index"); if (index != null){ return HtmlService.createHtmlOutput(index); } else { var output = HtmlService.createTemplateFromFile('index'); index = output.evaluate(); cache.put("index", index.getContent(), 60 * 60 * 24); return HtmlService.createHtmlOutput(index.getContent()); } } function clearCache(){ var cache = CacheService.getPublicCache(); var index = cache.get("index"); Logger.log(index); cache.remove("index"); }
<< 前へ |