ADVERTISEMENT

【Googleスプレッドシート】Microsoft Teamsへ更新通知!Webhook URL設定の方法

【Googleスプレッドシート】Microsoft Teamsへ更新通知!Webhook URL設定の方法
🛡️ 超解決

スプレッドシートの更新をチームで共有したいが、毎回手動で通知するのが面倒だと感じたことはありませんか。Microsoft TeamsのWebhookを使えば、スプレッドシートの変更を自動でチームに通知できます。この記事では、Webhook URLの取得からスプレッドシート側の設定までを詳しく解説します。これを読めば、チームのコミュニケーションを効率化する仕組みを構築できるでしょう。

【要点】Teams Webhookでスプレッドシート更新を自動通知する方法

  • Teams Incoming Webhook: チャネルにメッセージを送信するためのURLを生成します。これが通知の送信先です。
  • Google Apps Script: スプレッドシートの変更を検知し、HTTP POSTリクエストでWebhookにデータを送信します。
  • トリガー設定: 編集時や変更時にスクリプトを自動実行するようにします。これでリアルタイム通知が実現します。

ADVERTISEMENT

Webhookが更新通知を送信する仕組み

Webhookとは、アプリケーションがリアルタイムでイベントを他のサービスに通知するための仕組みです。Microsoft Teamsでは、特定のチャネルにWebhook URLを設定すると、そのURLにJSON形式のメッセージを送信することで自動投稿できます。Googleスプレッドシート側では、Apps Scriptを使って変更を監視し、WebhookにPOSTリクエストを送信します。両者を組み合わせることで、スプレッドシートの更新をTeamsに即座に通知できるのです。この方法を使えば、手動での連絡が不要になり、チームの情報共有がスムーズになります。

Webhook URLをTeamsで取得する手順

まずはMicrosoft Teams側でIncoming Webhookを作成し、通知を受け取るチャネルを設定します。

  1. チームとチャネルを選ぶ
    Teamsの左側メニューから通知を送りたいチームとチャネルを開きます。例えば「一般」チャネルを選択します。
  2. コネクタを追加する
    チャネル名の横にある「…」メニューから「コネクタ」を選択します。検索ボックスに「Incoming Webhook」と入力し、表示された結果をクリックします。
  3. Webhookを設定する
    「追加」ボタンを押し、Webhookの名前(例:「スプレッドシート通知」)とアイコンを設定します。「作成」をクリックすると、一意のWebhook URLが生成されます。このURLをコピーして安全な場所に保存します。「完了」で設定を終えます。

これでTeams側の準備は完了です。次の手順でスプレッドシート側を設定します。

GoogleスプレッドシートでApps Scriptを設定する手順

スプレッドシートのメニューからスクリプトエディタを開き、Webhookに通知を送る関数を作成します。

  1. スクリプトエディタを開く
    スプレッドシートを開き、メニューの「拡張機能」→「Apps Script」を選択します。新しいタブでエディタが開きます。
  2. 関数を作成する
    デフォルトのコードを削除し、以下の関数を貼り付けます。Webhook URLは先ほどコピーしたものに置き換えてください。
    function sendToTeams() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var lastRow = sheet.getLastRow();
      var lastColumn = sheet.getLastColumn();
      var data = sheet.getRange(lastRow, 1, 1, lastColumn).getValues()[0];
      var message = "スプレッドシートが更新されました。\n最新の行: " + data.join(", ");
      var payload = {
        "text": message
      };
      var options = {
        "method": "post",
        "headers": {
          "Content-Type": "application/json"
        },
        "payload": JSON.stringify(payload)
      };
      var webhookUrl = "https://outlook.office.com/webhook/..."; // ここにWebhook URLをコピー
      UrlFetchApp.fetch(webhookUrl, options);
    }
  3. トリガーを設定する
    スクリプトエディタの左側メニューから「トリガー」アイコン(時計マーク)をクリックし、「トリガーを追加」を押します。実行する関数に「sendToTeams」、イベントのソースに「スプレッドシートから」、イベントの種類に「編集時」を選択します。「保存」をクリックすると、最初に権限承認を求められます。自分のアカウントを選び、必要な権限を許可します。

これで、スプレッドシートのセルを編集するたびに、最新行のデータがTeamsに送信されるようになります。メッセージの内容は必要に応じてカスタマイズできます。

ADVERTISEMENT

通知が届かない場合の確認ポイント

Webhook URLが間違っている

コピーしたURLに誤字や余分な空白が含まれていないか確認します。URLの末尾に「/」が付いている場合は除去してください。再度コピーし直すと解決することが多いです。

スクリプトの権限が不足している

初回実行時に権限承認が必要です。スクリプトエディタで「実行」ボタンを押し、表示されるダイアログで許可を与えます。セキュリティ警告が出た場合でも、信頼できるスクリプトであれば「詳細」→「安全でないページに移動」を選んで許可します。

JSONのフォーマットが間違っている

TeamsのWebhookは特定のJSON形式を要求します。上記のサンプルコードでは「text」キーを使用していますが、よりリッチなメッセージ(タイトルや色など)を送りたい場合は、Microsoftの公式ドキュメントを参照し、適切な形式に変更してください。

スクリプトの実行制限に達している

Google Apps Scriptには1日あたりの実行回数制限があります。無料アカウントでは合計90分/日、トリガー実行は2000回/日までです。大量の更新がある場合は、制限に引っかかる可能性があります。その場合は、トリガーの間隔を広げるか、条件付きで送信するなどの対策を検討します。

Webhook設定とPower Automateの比較

項目 Webhook設定 Power Automate
設定の手軽さ Apps Scriptの知識が必要 ノーコードで簡単に設定可能
カスタマイズ性 コードで自由にメッセージを生成できる あらかじめ用意されたテンプレート内で調整可能
コスト 無料(実行制限内) 有料プランあり(無料枠あり)
Teams連携のしやすさ 直接JSONを送信するため柔軟 コネクタ経由で簡単に連携できる

まとめ

この記事では、Googleスプレッドシートの更新をMicrosoft Teamsに自動通知する方法を解説しました。TeamsのIncoming Webhookを取得し、Apps ScriptでPOSTリクエストを送信し、トリガーで自動実行させることで、手間なくリアルタイム通知が実現できます。もしより複雑なワークフローが必要な場合は、Power Automateの利用も検討するとよいでしょう。まずは小さな範囲でテストしてみて、チームのコミュニケーションを効率化してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。