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 = output.evaluate();まず、index.htmlをもとにHtmlTemplateオブジェクトを作成します。そしてそこからevaluateでHtmlOutputオブジェクトを作成します。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");
}
| << 前へ |