スプレッドシートのカスタム関数のキャッシュをセットアップしようとしていますが、結果に一貫性がないか、予期しないものになっているようです。キャッシュされた結果を取得することもあれば、データを更新することもあります。タイムアウトを 10 秒に設定しました。10 秒以内に更新すると、新しいデータが取得されることもあれば、キャッシュされることもあります。最後の呼び出しから 10 秒以上待っても、キャッシュされた結果が得られることがあります。スプレッドシート機能に矛盾が多いのはなぜですか? (または、私は何か間違ったことをしていますか?)。実際のスクリプト内で関数を直接呼び出すと、はるかに一貫性があるように見えますが、矛盾や予期しない結果が発生することがあります。
function getStackOverflow(){
var cache = CacheService.getPublicCache();
var cached = cache.get("stackoverflow");
if(cached != null) {
Logger.log('this is cached');
return 'this is cached version';
}
// Fetch the data and create an object.
var result = UrlFetchApp.fetch('http://api.stackoverflow.com/1.1/tags/google-apps-script/top-answerers/all-time');
var json = Utilities.jsonParse(result.getContentText()).top_users;
var rows = [],data;
for (i = 0; i < json.length; i++) {
data = json[i].user;
rows.push(data.display_name);
}
Logger.log("This is a refresh");
cache.put("stackoverflow",JSON.stringify(rows),10);
return rows;
}