GASでRSSからブログネタを自動収集する方法

自動化

※本記事はアフィリエイト広告(PR)を含みます

この記事では、Google Apps Script(GAS)で複数サイトのRSSフィードを読み取り、最新記事のタイトル・URL・公開日をスプレッドシートに自動でためる仕組みを作ります。所要時間は約20分。必要なのはGoogleアカウントだけで、コードはコピペでOKです。

「ネタ探しでブラウザを20個も開く」あの作業、これで終わるよ。自分も最初はブックマーク地獄だったんだ。

この仕組みでできること

RSSフィードを公開しているサイト(多くのブログ・ニュースサイトが対応)を登録しておくと、定期的に新着記事の情報がスプレッドシートの行として追加されていきます。

集まる情報は次の3つです。

  • 記事タイトル
  • 記事URL
  • 公開日時

これを眺めるだけで「今どんな記事が出ているか」が一覧でわかり、ブログのネタ出しが一気にラクになります。

ステップ1:スプレッドシートを準備する

  1. Googleスプレッドシートを開き、空白のシートを新規作成します。
  2. シート名(左下のタブ)を feeds に変更します。
  3. 1行目に見出しとして、A1に「収集日時」、B1に「サイト」、C1に「タイトル」、D1に「URL」、E1に「公開日」と入力します。

[画像: feedsシートの1行目に見出しを入れた状態]

見出し行は必須ではありませんが、後で見返すときに圧倒的にわかりやすくなります。

ステップ2:スクリプトエディタを開く

  1. メニューの 拡張機能 → Apps Script をクリックします。
  2. 新しいタブで「無題のプロジェクト」というエディタが開きます。
  3. プロジェクト名を RSS収集 などわかりやすい名前に変更しておきます(左上の「無題のプロジェクト」をクリック)。

[画像: Apps Scriptエディタの初期画面]

ステップ3:収集コードを貼り付ける

エディタにある function myFunction() {}すべて削除し、次のコードをそのまま貼り付けてください。

// 監視したいRSSフィードのURLをここに追加
const FEEDS = [
 { name: 'はてなブログ開発', url: 'https://staff.hatenablog.com/feed' },
 { name: 'Googleウェブマスター', url: 'https://developers.google.com/search/blog/feed.xml' },
];

function collectFeeds() {
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('feeds');
 const now = new Date();

 // 既存URLを取得して重複を防ぐ
 const existing = sheet.getRange('D:D').getValues().flat();

 FEEDS.forEach(feed => {
 try {
 const xml = UrlFetchApp.fetch(feed.url).getContentText();
 const doc = XmlService.parse(xml);
 const root = doc.getRootElement();
 let items = [];

 // RSS2.0形式(<item>)
 const channel = root.getChild('channel');
 if (channel) {
 items = channel.getChildren('item');
 } else {
 // Atom形式(<entry>)
 const ns = root.getNamespace();
 items = root.getChildren('entry', ns);
 }

 items.slice(0, 5).forEach(item => {
 const title = getText(item, 'title');
 const link = getLink(item);
 const date = getText(item, 'pubDate') || getText(item, 'updated');
 if (link && existing.indexOf(link) === -1) {
 sheet.appendRow([now, feed.name, title, link, date]);
 }
 });
 } catch (e) {
 Logger.log(feed.name + ' の取得に失敗: ' + e);
 }
 });
}

function getText(item, tag) {
 const ns = item.getNamespace();
 let child = item.getChild(tag);
 if (!child) child = item.getChild(tag, ns);
 return child ? child.getText() : '';
}

function getLink(item) {
 let link = item.getChild('link');
 if (link && link.getText()) return link.getText(); // RSS
 const ns = item.getNamespace();
 link = item.getChild('link', ns);
 return link ? link.getAttribute('href').getValue() : ''; // Atom
}

FEEDS の中身を、自分が監視したいサイトのRSS URLに書き換えてください。1行=1サイトで、カンマ区切りで何個でも追加できます。

RSSのURLが見つからないときは、サイトURLの末尾に `/feed` を付けると出てくることが多いよ。WordPressならだいたいこれでいける。

ステップ4:動かして権限を許可する

  1. エディタ上部の関数選択メニューで collectFeeds を選びます。
  2. ▶ 実行 ボタンをクリックします。
  3. 初回は「承認が必要です」と出るので、権限を確認 → 自分のアカウントを選択します。
  4. 「このアプリはGoogleで確認されていません」と出たら、詳細 → (プロジェクト名)に移動 をクリックし、最後に 許可 を押します。

[画像: GASの承認画面で「許可」を押す箇所]

実行が終わったら、スプレッドシートに戻ってみてください。feeds シートに記事が追加されていれば成功です。

実際に私の環境(はてな+Google検索ブログを登録)で試したところ、初回実行で8件ほど一気に入りました。重複チェックを入れているので、2回目以降は新着分だけが増えていきます。

ステップ5:自動実行(トリガー)を設定する

手動実行では意味が薄いので、定期的に勝手に動くようにします。

  1. エディタ左側の 時計アイコン(トリガー) をクリックします。
  2. 右下の トリガーを追加 をクリックします。
  3. 設定を次のようにします。
    • 実行する関数:collectFeeds
    • イベントのソース:時間主導型
    • 時間ベースのトリガー:時間ベースのタイマー
    • 時間の間隔:6時間おき(お好みで1日おきなどでもOK)
  4. 保存 を押します。

これで6時間ごとに自動でフィードを巡回し、新着があればシートに追記してくれます。

間隔は欲張らないのがコツ。1時間おきとかにすると、すぐ見ないのに行ばかり増えてかえって埋もれちゃうんだ。

つまずきポイント:うまくいかないとき

シートに何も追加されない

まず feeds というシート名が正確か確認してください。全角スペースや大文字小文字の違いでも getSheetByName は失敗します。コードの 'feeds' とタブ名を完全一致させましょう。

特定のサイトだけ取れない

RSSではなくAtom形式だったり、そもそもフィードを公開していない可能性があります。エディタの 実行ログ(実行後に下部へ表示)に「取得に失敗」と出ていないか確認してください。ブラウザでRSS URLを直接開いて、XMLが表示されるかどうかが切り分けの目安です。

「承認が必要です」が何度も出る

初回承認時に許可をスキップしているケースが多いです。ステップ4の手順で、最後の 許可 まで必ず押し切ってください。

取得件数が多すぎる/少なすぎる

コード内の items.slice(0, 5) の数字が、1サイトあたりの取得件数です。510 にすれば最新10件まで拾います。

まとめ

この記事では、GASでRSSフィードを巡回し、ブログのネタ候補をスプレッドシートに自動収集する仕組みを作りました。ポイントは次の通りです。

  • feeds シートとシート名を一致させる
  • FEEDS 配列に監視したいRSS URLを並べる
  • 時間主導型トリガーで6時間おきに自動実行する

次のアクションとしては、集まったタイトルをChatGPTに渡して「自分のブログ向けの切り口」に変換させると、ネタ出しまで一気通貫で自動化できます。まずは1〜2サイトだけ登録して、無理のない範囲から始めてみてください。

※GoogleのUIや仕様は変更される場合があります。画面表示が本記事と異なるときは、最新の表記に読み替えてください。

PR: ChatGPTなどの生成AIを学び仕事に活かす!「DMM 生成AI CAMP」

RSSで集めたネタを記事に仕上げる段階では、生成AIを使いこなせると作業効率が一段上がります。ChatGPTなどを仕事にどう活かせるか気になったら、DMM 生成AI CAMPの無料セミナーをのぞいてみては。学習プランや疑問点は無料相談で確かめられます。

DMM 生成AI CAMPの無料セミナーを見てみる

コメント

タイトルとURLをコピーしました