GASを使ってDiscordメッセージを取得する方法:初心者向け簡単ガイド

GASを使ってDiscordのメッセージを取得する方法が知りたいんだけど、どうすればいいんだろ?難しそうで…
猫男
猫男
catman
catman
心配しなくても大丈夫さ、catmanが「GASを使ってDiscordメッセージを取得する方法」を教えてあげよう。簡単だよ。

GASでDiscordメッセージを取得する基本

GAS(Google Apps Script)は、Googleの製品と連携しやすく、外部との通信にも利用されます。Discord APIを利用してメッセージを取得するのもその1つの方法です。

必要な準備

まず、Discordからメッセージを取得するためには、Discord APIを利用するので、ボットのトークンが必要です。そのためには、Discord Developer Portalでボットを作成してください。

GASでAPIを呼び出す

次に、GASでDiscord APIを呼び出してメッセージを取得する方法を見ていきます。

function getDiscordMessages() {
 var url = "https://discord.com/api/channels/{channel_id}/messages"; // チャンネルIDを指定する
 var options = {
 "method" : "get",
 "headers" : {
 "Authorization" : "Bot " + "YOUR_BOT_TOKEN" // ボットトークンを挿入
 }
 };
 
 var response = UrlFetchApp.fetch(url, options);
 var messages = JSON.parse(response.getContentText());
 
 Logger.log(messages);
} 

まず、指定したチャンネルIDのDiscordメッセージを取得するために、GETメソッドを使用します。

そして、取得したレスポンスをJSON形式でパースして、メッセージをログに出力します。

おお〜思ってたより簡単かも!これでメッセージを取得できるんだね。
猫男
猫男

 

GASで取得したDiscordメッセージを加工する

取得したメッセージデータを加工することができます。例えば、各メッセージのコンテンツを配列に追加してみましょう。

メッセージ内容の抽出

function extractMessageContent() {
 var url = "https://discord.com/api/channels/{channel_id}/messages";
 var options = {
 "method" : "get",
 "headers" : {
 "Authorization" : "Bot " + "YOUR_BOT_TOKEN"
 }
 };
 
 var response = UrlFetchApp.fetch(url, options);
 var messages = JSON.parse(response.getContentText());
 
 var messageContents = messages.map(function(message) {
 return message.content;
 });
 
 Logger.log(messageContents);
} 

ここでは、取得したメッセージの中からコンテンツのみを抽出しています。

GASのmapメソッドを使用することで、メッセージ内容を配列に収集できます。

なるほど!配列にメッセージ内容を入れられるんだ。何か他の処理もできそうだね。
猫男
猫男

 

練習問題

以下のスクリプトを修正して、Discordメッセージの送信者名とメッセージ内容を一緒に出力するようにしてみてください。

function logSenderAndMessage() {
 var url = "https://discord.com/api/channels/{channel_id}/messages";
 var options = {
 "method" : "get",
 "headers" : {
 "Authorization" : "Bot " + "YOUR_BOT_TOKEN"
 }
 };
 
 var response = UrlFetchApp.fetch(url, options);
 var messages = JSON.parse(response.getContentText());
 
 // ここを修正して送信者名とメッセージ内容を一緒にログ出力する
} 

 
 

解答・解説

function logSenderAndMessage() {
 var url = "https://discord.com/api/channels/{channel_id}/messages";
 var options = {
 "method" : "get",
 "headers" : {
 "Authorization" : "Bot " + "YOUR_BOT_TOKEN"
 }
 };
 
 var response = UrlFetchApp.fetch(url, options);
 var messages = JSON.parse(response.getContentText());
 
 messages.forEach(function(message) {
 Logger.log("Sender: " + message.author.username + ", Message: " + message.content);
 });
} 

ここでは、forEachメソッドを使用して各メッセージをループしています。

そして、メッセージのauthor.usernameプロパティを使って送信者名を取得し、message.contentを使ってメッセージ内容をログに出力しています。

これで送信者名も確認できるね!少しずつできることが増えてきて嬉しいよ。
猫男
猫男
catman
catman
そうだね、その調子でどんどんGASを使いこなしていこう!次はどんなことをやりたいか考えておくんだ。

EARTHPG 自動化研究所

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

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