🤖

Google Apps ScriptからDiscordにチャットを投稿する

2020/11/28に公開

はじめに

Discordの指定チャンネルにチャットを流したかったので調べてみました。

Discord側の準備

Webhook URLを発行していきます。

サーバーを右クリック->サーバー設定->連携サービスをクリックします。

ウェブフックを作成をクリック

Botの設定はお好みで設定してください。ウェブフックURLをコピーを押してどこかにメモしておきましょう。
※チャンネルで選択したところにチャットが投稿されます。

Google Apps Scriptの用意

何かしらのデータリソースを元にチャットを生成することが多いと思うので、スプレッドシート経由でプロジェクトを作成します。

データリソースを持っているスプレッドシートのメニューのツール->スクリプトエディタでGoogle Apps Scriptのプロジェクトを生成できます。

作成すると下記にGoogle App Scriptの編集画面が出てきます。

myFunctionを下記のようにします。WEBHOOK_URLには先程取得したURLをいれてください。

function myFunction() {
  const WEBHOOK_URL = ""; //取得したWebhookURLを追加

  const payload = {
    username: "BOTの名前",
    content: "投稿するテキスト",
  };

  UrlFetchApp.fetch(WEBHOOK_URL, {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload),
  });
}

コードを ctrl + s で保存しようとすると下記のようなダイアログがでてくると思います。OKを押しましょう。

送信テスト

Google Apps Scriptの編集画面からテスト送信してみます。

下記画像の赤で縁取って示している再生ボタンを押します。

初めて実行すると認証が必要なので下記のダイアログがでます。許可を押します。

Googleアカウントの選択画面がでるので選択してください。

下記は確実に出るかは分かりませんが、出なかったら読み飛ばしてください。
このダイアログが出てきたときはまず、下部にある詳細をクリックします。

プロジェクト名(安全ではないページ)に移動をクリックします。

許可をクリックします。

そうするとDiscordにチャットが送信されてきます!一度認証したあとは確認ダイアログはでなくなります。

おわりに

Google Apps Scriptを使ってDiscordにチャットを送信することができました。

今回はシンプルなテキストを送信しましたがembedsを使用することでもっとリッチにすることも出来ます。下記の記事が分かりやすかったです。
DiscordにWebhookでいろいろ投稿する
公式ドキュメントものぞいてみると良いかもしれません。
Webhook Resource(Discordのドキュメント)

また、今回は手動で投稿させましたが実際は指定した時刻に投稿させたいなどあるでしょう。
一番手軽なのはトリガーを利用することです。下記の記事が分かりやすくまとまっていておすすめです。
【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
Google Apps Script で毎日決まった時刻にスクリプトを実行するトリガー設定

Discussion