🐔

[GAS]Webhookを使ってDiscordに投稿するサンプル集

に公開

はじめに

WebhookやBotを使ってDiscordに投稿する場合、Discordアプリから投稿するより幅広い表現ができます。

GAS(GoogleAppsScript)からWebhookを実行する際のサンプルを紹介します。
以下のmessageの部分を書き換えて試してみてください。

const webhookUrl = "ここにWebhookのURLを入れてね";

function myFunction() {
  // メッセージの内容
  let message = {
    "content": "テストです!!!!!!",
  }

  // 投稿
  let options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(message),
  }
  UrlFetchApp.fetch(webhookUrl, options);
}

※GAS(GoogleAppsScript)からDiscordに投稿するチュートリアルはこちら👋
https://zenn.dev/mkhana/articles/e49cba5ee97d0d

サンプル

長い文章を投稿する

改行を含めて文章を投稿したい場合、そのまま改行してもうまくいきません。
改行したい場合は改行コード\nを入れましょう。

  // メッセージの内容
  let message = {
    "content": "「クマサン商会」が若者たちにあっせんしているバイト「サーモンラン」。\nお仕事内容はとてもシンプル。\n仲間と協⼒して、指定された数の「⾦イクラ」を納品する……\nたったこれだけ。",
  }


ちゃんと改行されました。

投稿者の名前とアイコンを変える

投稿者の名前とアイコンを変更して投稿できます。
messageにusernameavatar_urlを追加してみましょう。

  // メッセージの内容
  let message = {
    "content": "テストです!!!!!!",
    // ↓追加
    "username": "ヨコヅナ",
    "avatar_url": "http://drive.google.com/uc?export=view&id=1V_HqfPc4trhKq61qXVMY8OjSHnkU4qeS",
  }


投稿者がヨコヅナになりました✌️

Embed(埋め込み)を使う

Embedを使ってちょっとリッチな表示ができます。

変更内容

// メッセージの内容
let message = {
  "content" : "テストです!!!!!!",
  // ↓追加
  "embeds" : [
    {
      // embedエリアの左側の色を指定
      "color" : 0xFFD700, // ゴールド
      // 作成者の情報エリア
      "author" : {
        "name": "ブキチ",
        "icon_url": "https://www.nintendo.com/jp/character/splatoon/images/jp/pc/character/28/image.png",
        // ↓名前をクリックしたときの遷移先
        "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      },
      // タイトルと説明
      "title" : "スペースシューター",
      "description": "メインウェポンの スペースシューターは\n射程と連射力の両立を目指して\n開発された シューターでし!\n塗り能力が高い反面、攻撃力は低いでしから、\n長射程をイカして 前線の仲間をサポートする\n戦い方がオススメでし\nサブはポイントセンサーで相手の位置を仲間に伝え、\n仲間が倒しきれなかった相手は\nメガホンレーザー5.1chでトドメでし!\n遠くから塗って前線の仲間を後押ししつつ\nここぞの一撃をお見舞い! 美味しいとこ取りが\n好きな使い手に かわいがって欲しいでし!",
      // メインコンテンツ(複数設定可能)
      "fields" : [
        {
          "name" : "ポイントセンサー",
          "value" : "消費インク:45%",
          "inline" : false,
        },
        {
          "name" : "メガホンレーザー5.1ch",
          "value" : "塗りポイント:190",
          "inline" : false,
        },
      ],
    }
  ],
};

並べて表示

filedsinlineをtrueにすると横に並べて表示されます。(PCで表示した場合のみ)

      "fields" : [
        {
          "name" : "ポイントセンサー",
          "value" : "消費インク:45%",
          "inline" : true,
        },
        {
          "name" : "メガホンレーザー5.1ch",
          "value" : "塗りポイント:190",
          "inline" : true,
        },
      ],

画像添付

Embedにサムネイルや画像を添付することができます。

// メッセージの内容
let message = {
  "content" : "テストです!!!!!!",
  "embeds" : [
    {
      // (省略)
      // ↓追加
      "thumbnail": {
        // 画像のURL
        "url" : "http://drive.google.com/uc?export=view&id=1uFs33VMjNLJIdZT3sKcspGA1YX8V3kbO",
      },
      "image": {
        // 画像のURL
        "url" : "http://drive.google.com/uc?export=view&id=1KPgl4BCyYKpk6Q_YoMm8sdVCCaxkfqLQ",
      },
    }
  ],
};

複数画像を添付

画像は4枚までまとめて添付することができます。
ただし、urlプロパティを一致させる必要があるようなので、少し使いにくそうです。
こちらを参考

// メッセージの内容
let message = {
  "content" : "テストです!!!!!!",
  "embeds" : [
    {
      // (省略)
      // ↓同じURLを指定
      "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      "image" : {
        "url" : "http://drive.google.com/uc?export=view&id=1QxWbhgo8Byoay0M8_gtyWwMH1Dm7MfVd",
      },
    },
    {
      // ↓同じURLを指定
      "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      "image": {
        "url" : "http://drive.google.com/uc?export=view&id=1CjU0eYR61ZoJGiGVJp-ZmRMVNaSnSE4-",
      },
    },
    {
      // ↓同じURLを指定
      "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      "image" : {
        "url" : "http://drive.google.com/uc?export=view&id=1Gh6nLwWzlFkumcBdCL4oI73frXwEWSI5",
      },
    },
    {
      // ↓同じURLを指定
      "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      "image": {
        "url" : "http://drive.google.com/uc?export=view&id=1DZyhVMDDxQtkewTPIigEdgrJkW1t8hun",
      },
    },
  ],
};

盛り合わせ

他にもfootertimestampを追加できます。
また、1つの投稿にembedを複数追加することも可能です。
全部盛り込んだのがこちら

let message = {
  "username": "サルカニ",
  "avatar_url": "http://drive.google.com/uc?export=view&id=1OAY5jldWRZpq8jfisgUzIZSlmBgfLOnB",
  "url" : "https://www.nintendo.com/jp/character/splatoon/index.html",
  "content" : "ブキチさんによるブキ紹介のコーナー",
  "embeds" : [
    // 1つめのembed
    {
      "color" : 0xFFD700,
      "author" : {
        "name": "ブキチ",
        "icon_url": "https://www.nintendo.com/jp/character/splatoon/images/jp/pc/character/28/image.png",
        "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      },
      "title" : "スペースシューター",
      "description": "メインウェポンの スペースシューターは\n射程と連射力の両立を目指して\n開発された シューターでし!(略)",
      "fields" : [
        {
          "name" : "ポイントセンサー",
          "value" : "消費インク:45%",
          "inline" : true,
        },
        {
          "name" : "メガホンレーザー5.1ch",
          "value" : "塗りポイント:190",
          "inline" : true,
        },
      ],
      "thumbnail": {
        "url" : "http://drive.google.com/uc?export=view&id=1uFs33VMjNLJIdZT3sKcspGA1YX8V3kbO",
      },
      "image": {
        "url" : "http://drive.google.com/uc?export=view&id=1qLUM4qqNPt7LMLS5UcHbnYSyz2v7cLHz",
      },
      "timestamp" : "2025-03-27T21:45:00+0900",
      "footer" : {
        "icon_url" : "http://drive.google.com/uc?export=view&id=12-gkpCLXksxnOYmLDKYhLY8HFas1ljsW",
        "text" : "スプラトゥーン",
      },
    },
    // 2つめのembed
    {
      "color" : 0x89C9C7,
      "author" : {
        "name": "ブキチ",
        "icon_url": "https://www.nintendo.com/jp/character/splatoon/images/jp/pc/character/28/image.png",
        "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      },
      "title" : "デンタルワイパー ミント",
      "description": "メインウェポンの デンタルワイパーミントは、\n大量のインクを 太く飛ばすことに特化した\n攻撃範囲の広いワイパーでし!(略)",
      "fields" : [
        {
          "name" : "キューバンボム",
          "value" : "消費インク:70%",
          "inline" : true,
        },
        {
          "name" : "グレートバリア",
          "value" : "塗りポイント:210",
          "inline" : true,
        },
      ],
      "thumbnail": {
        "url" : "http://drive.google.com/uc?export=view&id=1ccDswqR3BL6dUMti-WCo58DaYD1aasIa",
      },
      "timestamp" : "2025-03-27T21:45:00+0900",
      "footer" : {
        "icon_url" : "http://drive.google.com/uc?export=view&id=12-gkpCLXksxnOYmLDKYhLY8HFas1ljsW",
        "text" : "スプラトゥーン",
      },
    },
    // 3つめのembed
    {
      "color" : 0xFFFFFF,
      "author" : {
        "name": "ブキチ",
        "icon_url": "https://www.nintendo.com/jp/character/splatoon/images/jp/pc/character/28/image.png",
        "url" : "https://www.nintendo.com/jp/character/splatoon/character/index.html#modal_character-28",
      },
      "title" : "ダイナモローラー",
      "description": "メインウェポンの ダイナモローラーは、\n発電機を組みこんだ、高い攻撃力と\n長い射程を持った ボク特製のローラーでし!(略)",
      "fields" : [
        {
          "name" : "スプリンクラー",
          "value" : "消費インク:60%",
          "inline" : true,
        },
        {
          "name" : "エナジースタンド",
          "value" : "塗りポイント:190",
          "inline" : true,
        },
      ],
      "thumbnail": {
        "url" : "http://drive.google.com/uc?export=view&id=1059axbhcOtEfTFCIhfkwz0KQyhzQTRmA",
      },
      "timestamp" : "2025-03-27T21:45:00+0900",
      "footer" : {
        "icon_url" : "http://drive.google.com/uc?export=view&id=12-gkpCLXksxnOYmLDKYhLY8HFas1ljsW",
        "text" : "スプラトゥーン",
      },
    },
  ],
};

補足

今回サンプルで使った画像は僕のGoogleDriveに上げています。
自分で用意した画像を使いたい場合は、共有可能な状態にしてアップしましょう。
下の例では、素材フォルダを共有(URLを知っていればアクセス可能)にしています。

画像のURLはhttp://drive.google.com/uc?export=view&id=(画像のID)になります。
画像IDは、リンクをコピーして取得できるURLの赤線の部分です。

おわりに

今回は試しやすいように極力ベタ書きでサンプルをあげてみました。
動的に投稿内容を変更したい場合はjavascriptの基本構文でコーディングできるので、ぜひ試してみてください🙆

おわり。

Discussion