Google Feed API のエラーは解消されました!
この記事は御役御免です!
よかった!

 

お久しぶりです。個人的に大きなニュースが飛び込んできたので記事にします。

Google Feed API が403エラーを吐くようになった

このページにたどり着いている方はもうご存知だと思いますが、Google Feed API が403エラーを吐くようになりました。

find と load の両方で、次のようになります。

これは…終焉でしょうか…

Google スプレッドシートで代替可能との情報…

Google スプレッドシートには、スプレッドシートの情報を JSON でウェブに公開してくれる機能がありますが、それを利用した Google Feed API に代わる RSS の JSON 取得方法が Twitter などで話題になっています。

クロノス・クラウン – 「Google Feed API」代替として「Googleスプレッドシート」を使う方法 (外部サイト)

こちらでは、はてなブログの新着エントリの RSS を Google スプレッドシートを経由して JSON 取得する方法が紹介されています。

今回は、この記事を参考(というかほぼ引用な気も…)にして、はてなブログ以外で多く使用できる RSS to JSON 変換シートの作成について紹介します。

変換シートの作成

Google スプレッドシートを新規作成する

こちらから Google スプレッドシートを作成します。

とりあえず、タイトルには「RSS を JSON に変換」と入れておきます。

スクリーンショット 2015-12-02 23.18.03

続いて、画面上部の「ツール」から「スプリクト エディタ…」をクリックします。

スクリーンショット 2015-12-02 23.21.20

スクリプトを作成する

こちらも、タイトルとして「get_rss」としておきます。

スクリーンショット 2015-12-02 23.23.27

画面のエディタには、

と表示されているかと思いますが、それを以下のように書き換えます。
(削除 & コピペで OK です)

できたら、保存しましょう。

スクリーンショット 2015-12-02 23.32.54

スクリプトの実行

続いて、「myFunction」の関数が選択された状態で、「実行」をクリックします。
(▶ のボタン、スクリーンショットを参考)

スクリーンショット 2015-12-02 23.34.17

承認が必要だと言われるので、許可します。

スクリーンショット 2015-12-02 23.36.19

許可すると、自動でスクリプトが実行されます。スプレッドシートを見てみると、タイトルと URL が取得できていることが分かります。

スクリーンショット 2015-12-02 23.39.32

スクリプトの編集

さて、先ほど掲載したスクリプトは本 Web サイト、treastrain Press の RSS を取得し、スプレッドシートに表示するものでした。
このスクリプトを書き換えていきましょう。

まず、スクリプトのこの部分、「press.treastrain.jp/feed」と書かれている部分に、JSON に書き換えたい RSS の URL を入力します。
「”(ダブルクオーテーション)」を消さないように注意してください。

スクリーンショット 2015-12-02 23.43.20

先ほどと同じ手順で「実行」し、スプレッドシートにタイトルと URL が表示されれば成功です。

——————–
スプレッドシートに何も表示されない場合はさらにスクリプトを編集する必要があります。

スクリーンショット 2015-12-03 00.16.29

このスクリーンショット内の 26、34、35行目で RSS のタグを指定していますので、その部分を編集してください。
——————–

スクリプトの自動実行

このままではスクリプトは「実行」ボタンを押した時にしか実行されず、自動で RSS の取得は行わないので、自動で取得出来るように設定します。
「実行」ボタンのとなりにある「現在のプロジェクトのトリガー」ボタン(吹き出しの中に時計の針 のアイコン)をクリックします。

スクリーンショット 2015-12-02 23.49.27

「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」をクリックします。
時間などを設定します。例として、このようにしてみました。
Google のサーバーですから、高頻度にしても大丈夫でしょう……。

スクリーンショット 2015-12-02 23.50.49

【2015年12月3日 午後2時31分(日本標準時) 追記】

あまりにも高頻度で更新するようにしてしまうと、Google 先生に怒られます…適当な時間に設定しましょう。

image

「保存」をクリックし、保存された瞬間から、RSS の自動取得が開始されます。
例の通りにトリガーを設定した場合、スプレッドシートを見てみると1分おきに内容が更新されていることが分かります。

変換シートを JSON で取得する

さて、スプレッドシートは完成したので、続いてこのスプレッドシートを JSON で取得出来るようにします。

ウェブに公開し、スプレッドシートのキーを取得する

スプレッドシートを Web に公開します。
「メニュー」から「ウェブに公開」を選択します。

スクリーンショット 2015-12-02 23.57.57

URL が表示されるので、コピーします。

スクリーンショット 2015-12-02 23.59.42

続いて、取得した URL の中からキーを取得します。
今回、例として取得した URL は

というものですが、URL の「1_4v6XfqFYcB7GAF2Jps4l7EcVx2ngN5yqr-cLgxYFx4」の部分がスプレッドシートのキーとなっています。
これをコピーしておきます。

JSON 取得用の URL を作る

Google スプレッドシートを JSON で取得する URL は、

https://spreadsheets.google.com/feeds/cells/ここにキーを入れる/od6/public/values?alt=json

です。今回の例の場合だと、

となります。
JSON ファイルを実際に表示してみると、こんな感じです。

読みづらいので、適当な Web サービスを使ってインデント付きで見たほうが楽ですね。
ちなみに私はいつも Json Parser Online (外部サイト) を使っています。

JSON で取得したデータは各自でパース!

Google スプレッドシート経由で JSON を使って RSS 情報を取得する方法を紹介してきました。
Google Feed API、Google がサービスを廃止するときは特に何も勧告すること無く廃止されることが多いのですが、
この Feed API に関しては様々なアプリケーションなどでも利用されていると思われるので、
影響はまぁまぁ大きいものと思われます。

今回のこの記事がアプリケーション開発者の方々の助けになればと思います。

この記事には続きがあります。
>>Google スプレッドシートの JSON を Swift でパース