0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DiscordのWebhookをCloudflare Workers経由で送る

0
Last updated at Posted at 2026-10-09

【原題】Google Apps ScriptでDiscord botを動かしたら動かなくなったので何とかした話

すべての内容は発表時点(2026年6月)のものです。
現在とは状況が変わっていることもあります。

この投稿は、2026年6月25日(木)に「#03 札幌開催:はじめてのIT勉強会 in 札幌(2026)【オフライン開催】」にてLT発表した内容を基に作成しています。

スライド

今までの流れ

  1. Googleスプレッドシートの内容をGoogle Apps Scriptで読み取り
  2. Google Apps SCriptからDiscordへとWebhookで内容を送信

という形でした。

アクセス制限の影響を受ける

Google Apps Script側で「429エラー」のログが多く出ていることを確認しました。
調べたところ、Cloudflrare側でブロックされていることがわかりました。

Cloudflare Workers経由に変更

以下の理由から、Cloudflare Workersを経由してDiscordにWebhookを送信することとしました。

  • Email WorkersからDiscordへのWebhookは正常に動作していたため
  • 無料で利用できるため
  • 自鯖より安定して稼働ができるため

ソースコード

index.js
export default {
  async fetch(request) {
    const discordWebhookUrl = "【ここにWEBHOOKのURLが入ります】";
    const body = await request.text(); 
    
    return await fetch(discordWebhookUrl, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: body,
    });
  },
};

考えられるセキュリティ対策

先ほど挙げたソースコードのままでは、URLを知っている人なら誰でもWebhookを実行できてしまうので、次のようなセキュリティ対策が考えられます。

  • APIキーを使用する
  • KVや環境変数(env)を使用する
  • エンドポイントURLのパスを長くする(例:/hogehoge)

運用結果

6月の1か月間で運用したところ、送信エラー(不達)が0件となりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?