読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

GoogleスプレットシートのImportFeedのキャッシュの話

 GoogleスプレットシートのImportFeedなど、Import系のタブ関数を使っていると2度目はサクッと動きます。それもそのはずで、Google側でキャッシュをしていて、取りに行っていないからです。

ImportFeedのキャッシュの動作


 例えば、下記のように取得し、隣の列にもう一度貼り付けたとしてもすぐに結果が返ってきます。

=IMPORTFEED("https://itunes.apple.com/jp/rss/topgrossingapplications/limit=25/genre=6015/xml","items title","true")

 自分で建てたサーバ上にXMLを配置し、Googleからのアクセスを確認しても2度目以降はアクセスが来ませんでした。問題は、そのキャッシュ時間がどれくらいか解らないこと。また、コントロールする方法が解らないことです。

f:id:dkfj:20161009203936p:plain

※ちなみに新しいURLを発見したと判断したのか、速攻でGoogleBotが来ますね。

ImportFeedのキャッシュ回避策


 取り敢えずの回避策としては、URLを変えてしまうことです。例えば、下記のように引数に意味のない一意の値をいれると、Googleから都度取得するようになります。

https://itunes.apple.com/jp/rss/topgrossingapplications/limit=25/genre=6015/xml?x=20161009201020

まとめ


 これでいいのかという気がしますが、世の中の人はどうしているのでしょうか?正しい方法あれば、教えてください。

追記


定期的に実行させて、サーバー側のアクセスログを見てみました。
12時間前後くらいキャッシュするっぽいような気がします。
テストパターンとか変えて、試してみればもう少し詳しくわかりそうですね。

66.249.77.25 - - [16/Oct/2016:04:24:52 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.79.32 - - [16/Oct/2016:13:58:21 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.79.33 - - [16/Oct/2016:23:52:48 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.79.32 - - [17/Oct/2016:13:52:24 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.71.6 - - [18/Oct/2016:04:33:14 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.77.26 - - [18/Oct/2016:18:00:33 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.79.32 - - [19/Oct/2016:08:19:01 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.79.83 - - [19/Oct/2016:20:43:56 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.79.73 - - [20/Oct/2016:10:38:22 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.75.168 - - [21/Oct/2016:00:41:56 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.65.52 - - [21/Oct/2016:15:12:07 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"
66.249.65.52 - - [22/Oct/2016:06:06:53 +0000] "GET /test.xml HTTP/1.1" 200 358999 "-" "FeedFetcher-Google; (+http://www.google.com/feedfetcher.html)"