ADVERTISEMENT

【Googleスプレッドシート】Discord通知をWebhookで送信!ボット連携で更新を共有

【Googleスプレッドシート】Discord通知をWebhookで送信!ボット連携で更新を共有
🛡️ 超解決

Googleスプレッドシートでデータを更新しても、その都度チームメンバーに知らせるのが難しいと感じたことはありませんか。手動で連絡するのは手間がかかり、見逃しも発生しやすいものです。この記事では、Googleスプレッドシートの更新をDiscordのWebhook機能を使って自動通知する方法を解説します。Apps Scriptを使えば、セルの変更や行の追加をトリガーに、Discordチャンネルへメッセージを送信できます。この記事を読めば、スプレッドシートの変更をリアルタイムでチームと共有できるようになります。

【要点】WebhookとApps Scriptでスプレッドシートの更新をDiscordに自動通知する方法

  • DiscordのWebhook URLを取得: サーバー設定からWebhookを作成し、通知先のチャンネルを指定します。
  • Apps Scriptで通知関数を作成: UrlFetchAppを使ってWebhookにPOSTリクエストを送信するスクリプトを書きます。
  • トリガーで自動化: 編集時や変更時にスクリプトが実行されるよう、編集トリガーを設定します。

ADVERTISEMENT

Webhookを使った通知の仕組みと前提条件

Webhookは、アプリケーション間でリアルタイムにデータを送信する仕組みです。GoogleスプレッドシートとDiscordを連携するには、まずDiscord側でWebhookを作成し、固有のURLを発行します。その後、GoogleスプレッドシートのApps ScriptからそのURLに対してHTTP POSTリクエストを送信することで、特定のチャンネルにメッセージを投稿できます。

この連携を実現するための前提条件は、以下のとおりです。Googleアカウント(スプレッドシートの編集権限があるもの)、Discordアカウント(サーバー管理権限があるもの)、そして基本的なスクリプト編集の知識です。Apps Scriptの文法はシンプルなため、プログラミング未経験の方でも、この記事の手順をなぞれば設定できます。

Discord Webhookでスプレッドシート更新を通知する手順

ここでは、実際に通知を設定する手順を説明します。大きく分けて3つの工程があります。まずDiscord側でWebhookを準備し、次にGoogleスプレッドシートでApps Scriptを記述し、最後にトリガーを設定します。

手順1:DiscordでWebhookを作成する

  1. Discordサーバー設定を開く
    通知を送りたいチャンネルが属するサーバーで、サーバー名の横にあるドロップダウンメニューから「サーバー設定」を選択します。
  2. Webhookメニューを選択
    左メニューから「連携サービス」をクリックし、「Webhook」の「ウェブフックを見る」をクリックします。
  3. 新しいWebhookを作成
    「ウェブフックを作成」ボタンをクリックし、名前(例:「スプレッドシート通知」)と通知先チャンネルを設定します。「ウェブフックURLをコピー」をクリックしてURLをメモしておきます。このURLは後でスクリプトに使います。

手順2:GoogleスプレッドシートでApps Scriptを記述する

  1. スクリプトエディタを開く
    通知を設定したいスプレッドシートを開き、メニューの「拡張機能」→「Apps Script」をクリックします。
  2. スクリプトファイルを作成
    プロジェクトが開いたら、デフォルトの「コード.gs」を以下のコードに置き換えます。
    function sendDiscordNotification() {
    var webhookUrl = "https://discord.com/api/webhooks/あなたのWebhookURL";
    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最新行のデータ:\n" + data.join(", ");
    var payload = {
    "content": message
    };
    var options = {
    "method": "POST",
    "headers": {"Content-Type": "application/json"},
    "payload": JSON.stringify(payload)
    };
    UrlFetchApp.fetch(webhookUrl, options);
    }

    「あなたのWebhookURL」の部分を手順1でコピーしたURLに置き換えてください。
  3. スクリプトを保存する
    Ctrl+S(または⌘+S)で保存し、プロジェクト名を「Discord通知」などに変更します。

手順3:編集トリガーを設定する

  1. トリガー設定画面を開く
    スクリプトエディタの左メニューから「時計マークのアイコン(トリガー)」をクリックします。
  2. 新しいトリガーを追加
    「トリガーを追加」ボタンをクリックし、以下の設定を行います。
    ・実行する関数: sendDiscordNotification
    ・デプロイの種類: ヘッド
    ・イベントのソース: スプレッドシートから
    ・イベントの種類: 編集時(または変更時)
    ・エラー通知: 必要に応じて設定
  3. トリガーを保存する
    「保存」をクリックします。初回は承認ダイアログが表示されるので、自分のGoogleアカウントで許可します。これで、スプレッドシートが編集されるたびにDiscordに通知が送られるようになります。

Webhook通知設定時の注意点とトラブルシューティング

実際に設定を進める際に、つまずきやすいポイントをいくつか紹介します。

Webhook URLが間違っている

Webhook URLの末尾に余計なスペースや改行が入っていないか確認してください。また、URLの「/api/webhooks/」以降の文字列が完全に一致している必要があります。間違っていると通知が届きません。URLはDiscordのWebhook設定画面から再度コピーし直すと確実です。

Apps Scriptの承認が完了していない

トリガーを保存するときやスクリプトを初めて実行するとき、権限の承認が必要です。承認画面で「許可」をクリックしないと、スクリプトが実行されません。また、許可するアカウントがスプレッドシートの編集者であることも確認してください。

通知が重複して送信される

編集トリガーはセルが変更されるたびに実行されるため、連続した編集やスクリプトによる変更でも通知が送られます。特定の列だけ変更を監視したい場合は、スクリプト内で編集された範囲をチェックする条件分岐を追加すると良いでしょう。例えば、特定のシート名や列番号を条件に加えることで、必要なときだけ通知できます。

ADVERTISEMENT

手動通知とWebhook自動通知の比較

項目 手動通知 Webhook自動通知
即時性 送信者の都合に依存 編集直後に自動送信
手間 毎回手動でメッセージ作成 初期設定のみ
ヒューマンエラー 送信忘れが発生しやすい 発生しない
カスタマイズ性 自由に文章を変えられる スクリプトで柔軟に制御可能

まとめ

この記事では、Googleスプレッドシートの更新をDiscord Webhookで自動通知する方法を解説しました。Webhook URLの取得、Apps Scriptのコード記述、トリガー設定の3ステップで、編集のたびに自動でメッセージを送れるようになります。これにより、チーム内での情報共有が格段にスムーズになります。さらに応用として、通知内容に変更セルの値やシート名を含めたり、特定の条件で通知を分岐させることも可能です。スクリプトのif文やfor文を使って、より細かい通知制御に挑戦してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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