GASとDiscordの連携でメンションを活用する極意

GASを使ってDiscordでメンションするにはどうしたらいいんだろう…。初心者には難しそうで…。
猫男
猫男
catman
catman
心配無用さ、catmanが「GASとDiscordのメンション」について指南してやろう!手順を一緒に確認していこう。

GASとDiscordをつなぐ準備

まず、GASを使ってDiscordでメンションをするための準備をしましょう。最初に必要なのは、DiscordのWebhooks機能です。

DiscordでWebhookを設定する方法

DiscordのWebhookを利用することで、GASから直接メッセージを送信できるようになります。

  1. Discordのサーバーを開き、Webhookを設定したいチャンネルの「設定」をクリックします。
  2. 「インテグレーション」に移動し、「ウェブフック」を選択します。
  3. 「ウェブフックを作成」をクリックし、名前やアイコンを設定します。
  4. URLが生成されるので、それをGASで利用します。

これで、GASでメッセージをDiscordに送信する準備が整いました。

GASプロジェクトをセットアップする

次に、GASプロジェクトを設定していきます。スクリプトエディタを開き、以下の手順で準備します。

  1. Googleドライブで新規プロジェクトを作成します。
  2. スクリプトエディタを開きます。
  3. 新しいプロジェクトを選択し、スクリプトを書く準備をします。

これで、GASプロジェクトが作成できました。

やった、これで準備は整ったんだね!
猫男
猫男

 

GASでDiscordにメンションを送る方法

ここからは、GASでDiscordにメンションをする具体的なスクリプトを書く方法を説明します。

スクリプトを書いてメッセージを送信する

GASとDiscordをつなぐスクリプトを作成していきます。

function sendDiscordMessage() {
  const url = 'DISCORD_WEBHOOK_URL';
  const payload = {
    "content": "@everyone GASからのメッセージです!"
  };
  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };
  UrlFetchApp.fetch(url, options);
}

UrlFetchApp.fetchを使って、DiscordのWebhook URLへHTTP POSTリクエストを送っています。このリクエストにはメンション内容を含むペイロードを与えています。

わぁ、スクリプトを使えば簡単にメッセージを送れちゃうんだ!
猫男
猫男

 

メンションの個別指定もしてみよう

特定のユーザーにメンションを送ることもできます。以下の方法で実現可能です。

特定ユーザーへのメンション

ユーザーIDを利用して、特定のユーザーにメンションを送信することができます。

function sendMentionToUser() {
  const url = 'DISCORD_WEBHOOK_URL';
  const userID = "USER_ID";
  const payload = {
    "content": "<@!" + userID + "> こんにちは、メッセージが届きましたよ!"
  };
  const options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };
  UrlFetchApp.fetch(url, options);
}

ユーザーIDを<@!USER_ID> 形式で指定することで、特定のユーザーに対してメッセージを送れます。

こうやって個別にもメンションを送れるなんて、すごく便利だね!
猫男
猫男

 

練習問題:GASでメンションを自動化する

GASを使ってDiscordで特定の言葉を聞くたびにメンションを自動的に送るスクリプトを作成してください。使用するWebhook URLは “DISCORD_WEBHOOK_URL” で、Webhookを活用してください。

 
 

解答・解説:自動化メンションスクリプト

function autoMentionOnKeywords() {
  const keywords = ["緊急", "重要", "知らせ"];
  const url = 'DISCORD_WEBHOOK_URL';
  
  // チェックしたいメッセージを仮定
  const message = "これは重要なお知らせです!";

  keywords.forEach(function(keyword) {
    if (message.includes(keyword)) {
      const payload = {
        "content": "@everyone 重要なお知らせがあります!"
      };
      const options = {
        'method': 'post',
        'contentType': 'application/json',
        'payload': JSON.stringify(payload)
      };
      UrlFetchApp.fetch(url, options);
    }
  });
}

このスクリプトは、特定のキーワードが登場した場合に、自動的にDiscordチャンネルへメンションを送信するように設定しています。forEachメソッドを使ってキーワードをチェックし、見つかった場合にはメッセージを送信しています。

catman
catman
さぁ、これで君もGASとDiscordを活用して、メンションを自在に扱えるようになったさ!

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。