とりゅふの森

GCPデータエンジニアとして生きる

GASを使ってRSSフィードをGoogleスプレッドシートに出力する

f:id:true-fly:20210728224533p:plain

皆さん、ブログなどを見るときに、RSSリーダー、使ってますか?
購読したいサイトのRSSを登録しておいて、新着記事が来たらRSSリーダー内の一覧に表示し、記事を読んでいく、
情報収集ツールとして欠かせないツールですよね。
でも、張り切ってたくさんのサイトのRSSを登録しちゃうと、いつの間にか未読が数十件、数百件と積み上がって、
これ以上読みきれない!!って状態になったことありませんか?ありますよね!?

作ったもの

Googleスプレッドシート & Google Apps ScriptでRSSフィードを一覧化する処理を作りました。
GitHubで公開しています。 github.com

こんな感じで表形式で一覧で見れます。チェックボックスをつけて、不要なものはフィルターで非表示にしていきます。
毎日RSSフィードを取得して、表の下に追記していく仕組みです。 f:id:true-fly:20210718205845p:plain

Google Apps ScriptはWebアプリケーションも作成できます。現時点ではただタイトルとURLを並べただけ。 f:id:true-fly:20210718210126p:plain

上記画像ですが、Google Cloudブログ様のRSSを元に作成しております。いつも楽しく読んでます。みなさんもぜひご購読ください。 cloud.google.com

使い方

Claspの導入

GASのコードですが、GitHubに公開するにあたって、ClaspというGoogle謹製のCLIツールを使っています。
Clasp環境ない場合でも、GitHubのソースをコピペして自分のGASプロジェクトに貼れば使えますが、
以下のQiitaの手順に従って環境構築してみてください。
qiita.com

Claspの環境構築ができたら、自分のGoogleスプレッドシートからGASのプロジェクトを作成してスクリプトIDを確認します。 f:id:true-fly:20210718214109p:plain

Git Clone

下記リポジトリをgit cloneしてください。 github.com

GASプロジェクトへのソースの反映

git cloneしたディレクトリで作業します。
スクリプトIDを元にclasp cloneします。 
もともとあるコード.jsはいらないので削除します。
削除したらそのまま clasp pushします。

$ clasp clone [YOUR_SCRIPT_ID]
Cloned 2 files.
└─ appsscript.json
└─ コード.js
$ rm コード.js 
$ clasp push

ブラウザでGASプロジェクトをリロードして確認してみましょう。無事ソースが反映されているはずです。

f:id:true-fly:20210718214501p:plain

RSSの設定

スプレッドシートに「target」というシートを作成し、以下のように、A列にタイトル、B列にRSSのURLを貼ってください。
ここにある値をスクリプトが読み込んで、自動で処理してくれます。 f:id:true-fly:20210718214616p:plain

スクリプトの手動実行

main.gsを選択した状態で、実行をしてみてください。最初は諸々承認が聞かれると思いますので、全て許可をしてください。 f:id:true-fly:20210718214818p:plain

成功すると、シートが作成され、RSSフィードを取得し、セルにデータが入力されます。 f:id:true-fly:20210718214911p:plain

定期実行

GASの左側のメニューから、トリガーを選択

f:id:true-fly:20210718215118p:plain

以下のように、main関数を日次で実行するように設定ができます。
これで毎朝スプレッドシートに、RSSフィードのデータを追記してくれるようになります。

f:id:true-fly:20210718215155p:plain

おまけ Webアプリケーションとしてデプロイ

スプレッドシートなので、表で見るのが目的なのですが、一応Webアプリケーションとしてもデプロイができます。
GASの画面の右上の、デプロイ > 新しいデプロイを選択し、

f:id:true-fly:20210718215316p:plain

種類の選択を問われるので、Webアプリを選択、

f:id:true-fly:20210718215434p:plain

説明、実行ユーザ、公開設定を入力し、デプロイします。

f:id:true-fly:20210718215548p:plain

URLが表示されるので、そこにアクセスしましょう。無事スプレッドシートのデータを元にWeb画面が表示されるのが確認できます。
Webアプリケーションの方は現時点ではただ文字とURLだけですが、機会があればもっとリッチにしてGitHubに公開しようと思います。 f:id:true-fly:20210718215838p:plain

まとめと今後の展望

以上、GASを使ってRSSフィードをGoogleスプレッドシートに出力するツールを作ったので簡単に紹介しました。
GASのWebアプリケーションの作成はお手軽で楽しいので、ツールづくりにこれからも活用していきたいです。
claspは便利です。QiitaにClaspの環境構築を公開していますが、本ブログでももっと整理して公開しようと思っています。
データがある程度溜まったら、タイトルとかdescriptionを元に、自分が興味ありそうかなさそうか自動判定してくれる仕組みとかも作りたいなと思いました。