【コピペOK】関心ニュースを自動収集!GASとSlackで特定キーワードを含む最新情報を30分でチームに共有する方法

フリーランスや経営者の皆さん、毎日の情報収集にどれくらいの時間を費やしていますか?「業界の最新動向をチェックしなきゃ」「競合の動きが気になる」「法改正の情報は見逃せない」…そう思いながら、気づけばいくつものニュースサイトを巡回して1時間経っていた、なんて経験はありませんか?チームへの情報共有も、いちいちリンクをコピペして連絡するのは地味に面倒な作業ですよね。もし、その情報収集と共有作業を完全に自動化できるとしたらどうでしょう。この記事では、Googleが提供する無料のプログラミング環境「Google Apps Script(GAS)」と、ビジネスチャットツール「Slack」を連携させ、指定したキーワード(例えば「AI」「DX」「補助金」など)を含むニュース記事だけを自動でSlackに通知する仕組みの作り方を、ステップ・バイ・ステップで徹底解説します。「プログラミングなんて無理!」と思っている方でも大丈夫。コピペで使えるサンプルコードを用意しましたので、30分後にはあなた専用のニュース収集ロボットが完成しているはずです。さあ、面倒なルーティンワークは自動化して、もっと創造的な仕事に時間を使いましょう!

今回作成する自動化の全体像

まずは、今回作る「自動ニュース通知システム」がどのような仕組みで動くのか、全体の流れを確認しましょう。以下の図のように、非常にシンプルな構成になっています。

graph TD
    A[⏰ 定期実行トリガー
(例: 1時間ごと)] --> B{ニュース記事を取得
(RSSフィード)}; B --> C{記事内に指定キーワードは
含まれているか?}; C -- YES --> D[✅ Slackに通知
(記事タイトルとURL)]; C -- NO --> E[❌ 何もしない]; D --> F[処理終了]; E --> F;

Google Apps Script(GAS)が設定した時間(例えば1時間ごと)に自動で動き出し、指定したニュースサイトのRSSフィードから最新記事の情報を取得します。そして、記事のタイトルや内容に私たちが設定したキーワードが含まれているかをチェック。もしキーワードが見つかれば、Slackに「こんな記事がありましたよ!」と自動でメッセージを投稿してくれる、という流れです。

ステップ0:事前準備

作業を始める前に、以下の4つをご準備ください。すべて無料で利用できるものばかりです。

  • Googleアカウント
    今回の主役であるGoogle Apps Script(GAS)を利用するために必須です。普段お使いのGmailアカウントなどで問題ありません。
  • Slackアカウント
    通知を受け取りたいSlackワークスペースのアカウントです。新しいアプリ(Incoming Webhook)を追加する権限が必要になります。
  • 通知したいSlackチャンネル
    ニュースを通知する専用のチャンネルを事前に作っておくことをおすすめします(例:「#最新ニュース」「#業界動向」など)。
  • 監視したいニュースサイトのRSSフィードURL
    ニュースの元ネタとなる情報源です。多くのニュースサイトは「RSS」という形式で記事情報を配信しています。サイト内でRSSアイコンを探したり、「サイト名 RSS」で検索したりしてURLを見つけておきましょう。今回は例として、IT系ニュースサイトのRSSを使います。

ステップ・バイ・ステップ構築ガイド

準備が整ったら、いよいよ構築スタートです!一つずつ丁寧に進めていきましょう。

Step1:SlackでIncoming Webhook URLを取得しよう

最初に、GASからSlackへメッセージを投稿するための「合鍵」となる特別なURLを取得します。

  1. お使いのSlackをブラウザかデスクトップアプリで開きます。
  2. 左上のワークスペース名をクリックし、「設定と管理」から「その他管理項目」の中にある「App管理」を選択します。ブラウザでAppディレクトリが開きます。
  3. 検索バーに「Incoming Webhooks」と入力し、表示されたアプリをクリックします。
  4. 「Slackに追加」ボタンをクリックします。
  5. 次の画面で「投稿先のチャンネルを選択」という項目があるので、先ほど準備した通知用チャンネルを選び、「Incoming Webhookインテグレーションの追加」ボタンをクリックします。
  6. 「Webhook URL」という項目に、https://hooks.slack.com/services/...で始まるURLが表示されます。これが「合鍵」です。このURLをコピーして、メモ帳などに大切に保管しておいてください。(注意:このURLは外部に漏れないように厳重に管理してください)

Step2:Google Apps Scriptプロジェクトを準備しよう

次に、自動化プログラムを設置する場所を用意します。

  1. Google Driveにアクセスします。
  2. 左上の「+ 新規」ボタンをクリックし、「その他」>「Google Apps Script」を選択します。(もし見当たらない場合は、「アプリを追加」から検索して追加してください)
  3. 新しいプロジェクトが作成され、コードエディタ画面が開きます。
  4. 左上の「無題のプロジェクト」をクリックし、分かりやすい名前(例:「ニュース自動通知くん」)に変更して「名前を変更」をクリックします。

これでプログラムを書く準備が整いました。

Step3:スクリプトを書いてみよう(コピペOK!)

いよいよメインのプログラムを作成します。以下のコードをすべてコピーし、エディタに表示されている既存のコード(function myFunction() { ... })をすべて削除してから貼り付けてください。

// 【設定項目】ここを自分の環境に合わせて変更してください
const RSS_URL = 'https://www.itmedia.co.jp/rss/2.0/news_bursts.xml'; // 監視したいニュースサイトのRSSフィードURL
const KEYWORDS = ['AI', 'DX', '自動化']; // 検索したいキーワードを配列で指定(複数可)

// SlackのWebhook URLをスクリプトプロパティから取得する
const SLACK_WEBHOOK_URL = PropertiesService.getScriptProperties().getProperty('SLACK_WEBHOOK_URL');

// メインの処理を実行する関数
function checkNewsAndNotifySlack() {
  if (!SLACK_WEBHOOK_URL) {
    console.error('Webhook URLが設定されていません。スクリプトプロパティを確認してください。');
    return;
  }

  try {
    // RSSフィードから記事情報を取得
    const response = UrlFetchApp.fetch(RSS_URL);
    const xml = response.getContentText();
    const document = XmlService.parse(xml);
    const root = document.getRootElement();
    const channel = root.getChild('channel');
    const items = channel.getChildren('item');

    // 最終チェック時間を取得(なければ3時間前をセット)
    const lastCheckedTime = getLastCheckedTime();

    let newArticlesCount = 0;

    for (let i = 0; i < items.length; i++) {
      const item = items[i];
      const pubDateStr = item.getChildText('pubDate');
      const pubDate = new Date(pubDateStr);

      // 最終チェック時間より新しい記事のみを対象とする
      if (pubDate.getTime() > lastCheckedTime) {
        const title = item.getChildText('title');
        const link = item.getChildText('link');
        const description = item.getChildText('description');
        
        // タイトルか概要にキーワードが含まれているかチェック
        if (isKeywordIncluded(title + description)) {
          // Slackに通知を送信
          sendToSlack(title, link);
          newArticlesCount++;
        }
      }
    }

    // 今回のチェック時間を保存
    saveCurrentTime();

    console.log(`処理完了。${newArticlesCount}件の新規関連記事を通知しました。`);

  } catch (e) {
    console.error('エラーが発生しました: ' + e.toString());
  }
}

// キーワードが含まれているかチェックする関数
function isKeywordIncluded(text) {
  return KEYWORDS.some(keyword => text.toLowerCase().includes(keyword.toLowerCase()));
}

// Slackにメッセージを送信する関数
function sendToSlack(title, link) {
  const payload = {
    'text': `【新着ニュース】\n*${title}*\n${link}`,
  };

  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload),
  };

  UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}

// ---------------------------------------------------
// 重複通知を防ぐためのヘルパー関数
// ---------------------------------------------------

const SCRIPT_PROPERTY_KEY = 'LAST_CHECKED_TIMESTAMP';

// 最終チェック時間を取得する関数
function getLastCheckedTime() {
  const lastTimestamp = PropertiesService.getScriptProperties().getProperty(SCRIPT_PROPERTY_KEY);
  if (lastTimestamp) {
    return parseInt(lastTimestamp, 10);
  }
  // 初回実行時は3時間前の時刻を返す
  return new Date().getTime() - (3 * 60 * 60 * 1000);
}

// 現在の時刻を保存する関数
function saveCurrentTime() {
  PropertiesService.getScriptProperties().setProperty(SCRIPT_PROPERTY_KEY, new Date().getTime().toString());
}

コードを貼り付けたら、冒頭の【設定項目】の部分をあなたの環境に合わせて書き換えてください。

  • RSS_URL: Step0で準備した、監視したいニュースサイトのRSSフィードURLに書き換えます。
  • KEYWORDS: 通知してほしいキーワードを['キーワード1', 'キーワード2']のように設定します。1つでも複数でもOKです。

書き換えたら、必ずフロッピーディスクのアイコン(プロジェクトを保存)をクリックして保存してください。

Step4:スクリプトプロパティにWebhook URLを設定しよう

Step1で取得したSlackのWebhook URLは、プログラムに直接書き込むとセキュリティ上好ましくありません。そこで、GASの「スクリプトプロパティ」という安全な場所に保管します。

  1. GASエディタの左側メニューから、歯車アイコンの「プロジェクトの設定」をクリックします。
  2. 画面を下にスクロールすると「スクリプト プロパティ」というセクションがあります。「スクリプト プロパティを追加」ボタンをクリックします。
  3. 「プロパティ」の欄に `SLACK_WEBHOOK_URL` と入力します。(一文字も間違えないように入力してください
  4. 「値」の欄に、Step1でコピーしたSlackのWebhook URL(https://hooks.slack.com/...)を貼り付けます。
  5. 「スクリプト プロパティを保存」ボタンをクリックします。

これで、プログラムが安全にWebhook URLを読み込めるようになりました。

Step5:自動実行のトリガーを設定しよう

最後に、このプログラムを自動で定期的に実行するための「トリガー」を設定します。

  1. GASエディタの左側メニューから、目覚まし時計アイコンの「トリガー」をクリックします。
  2. 右下の「トリガーを追加」ボタンをクリックします。
  3. 以下の通りに設定します。
    実行する関数を選択: `checkNewsAndNotifySlack`
    実行するデプロイを選択: `Head`
    イベントのソースを選択: `時間主導型`
    時間ベースのトリガーのタイプを選択: `時間ベースのタイマー`
    時間の間隔を選択(時): `1時間おき`(お好みの間隔に変更可能です)
  4. 設定が終わったら「保存」ボタンをクリックします。

初めてトリガーを設定する際、Googleアカウントの承認を求められます。画面の指示に従い、「詳細」→「(プロジェクト名)に移動」→「許可」と進んで、プログラムに権限を与えてください。これで全ての準備が完了です!

まとめ:自動化で生まれた時間を、もっと創造的な仕事に

お疲れ様でした!これで、あなたが眠っている間も、他の仕事に集中している間も、プログラムが自動で最新ニュースをチェックし、重要な情報だけをチームに届けてくれるようになりました。これまで情報収集と共有に使っていた時間を、新しい企画を考えたり、お客様とのコミュニケーションを深めたりと、より付加価値の高い仕事に使えるはずです。今回の仕組みを応用すれば、例えば自社製品名やサービス名を含むブログ記事を収集して評判をチェックしたり、特定の技術に関する最新情報を集めたりすることも可能です。ぜひ、あなたのビジネスに合わせたキーワードを設定して、この自動化システムを最大限に活用してください。次は、Googleフォームからの問い合わせに自動返信する仕組みなど、さらに高度な自動化にも挑戦してみませんか?可能性は無限大です!


免責事項:本記事で紹介している手順やコードは、執筆時点での情報に基づいています。各サービスの仕様変更により、同様の手順で動作しない可能性があります。また、本チュートリアルの実行によって生じたいかなる損害についても、当方は一切の責任を負いかねます。ご自身の責任において、バックアップを取るなどの対策の上、実行してください。

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