🐕

Google Apps ScriptでDiscordにメッセージを定期送信する方法【初心者向け】」

2024/11/29に公開

背景

https://youtu.be/1pfiKja9YAQ?si=cL0uwfnd2m756NUo

↑の動画がDiscordにペタっと共有された。
友人はこれが好きすぎて1週間おきに見ているらしい。
なら、定期的にメッセージで送ってあげるか!ってなったため。

友人同士のサーバーでジョークツール。
決して、真面目なサーバーで作ってはいけない。

実際に作ったものはこんな感じ

必要なもの

  • Discordアカウント
  • Googleアカウント

どういうのを作るのか

Discordのwebhookに飛ばしてメッセージを送信するだけのbot。
botを作って招待するまでもないかなということでwebhookにしました。

作成手順

DiscordのサーバーでWeb hook URLを発行する

webhookのURLはサーバー設定の 連携サービス の中にある。

ウェブフックを作成を押すとwebhookのbotが作成できる。

名前やアイコンは自由に決めてよい。
チャンネルはメッセージを送信するチャンネルを指定する。
最後に、Webhook URLはコピーしてどこかで保存しておく(後で使うため)

Google Apps Scriptを作る

Googleドライブを開いて、マイドライブで右クリック>その他>Google Apps Scriptを押す。

スクリプト作成を押す。

こんな感じのエディターが開く。
名前は好きなのつける。例: discord-webhook-cron

画像↓のコードを貼り付けます。

function sendDiscordMessage() {
  // DiscordのWebhook URLを値に入れる
  const webhookUrl = '';
 // 送信するメッセージの内容
  const message = {
    content: '@everyone\nこんにちは、Discord webhook botです。'
  };

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

  try {
    const response = UrlFetchApp.fetch(webhookUrl, options);
    Logger.log('メッセージを送信しました: ' + response.getContentText());
  } catch (e) {
    Logger.log('エラーが発生しました: ' + e.toString());
  }
}

こんな感じになるはず

Discordのwebhook URLを const webhookUrl = ''; の値に入れる。

入れた後

これでやることは完了

動作確認

これで、実行を押してみる

権限が必要ですよと確認が入る

そのまま進むとログインが入るのでログインする

警告が出てくるが、詳細を押して無題のプロジェクトに移動を押す

アクセス許可をくれと言ってくるので許可する

Google Apps Scriptの方に成功のログがでる。

Discordのチャットにはメッセージがちゃんと出ているはず。

定期実行

Google Apps Scriptにはトリガーがあるのでそれで指定できる。
サイドバーの時計のアイコンを押すとトリガーのダッシュボードが開く。
トリガーを作成を押すと画面が出るので好きな時間を設定して定期実行できる。

注意点

  • Webhook URLは第三者に漏れると危険なので慎重に取り扱ってください
    • 今回は直接Webhook URLを指定していますが、Google Apps Scriptのプロジェクト設定にあるスクリプトプロパティを使うとセキュリティ的によいかもしれません

スクリプトプロパティを使う方法

任意の名前でプロパティを作成する 例: DISCORD_WEBHOOK_URL

webhookUrl の値を以下のように変更する

const webhookUrl = PropertiesService.getScriptProperties().getProperty('DISCORD_WEBHOOK_URL');

Discussion