Discordで画像を使ったGASスクリプト活用法!初心者向けガイド
GASで画像を生成する基本
GASを使うと簡単に画像を生成できます。まず、基本的な画像生成の方法を見てみましょう。
function createImage() {
const canvas = new Graphics(200, 200);
canvas.fillStyle = '#FF0000';
canvas.fillRect(50, 50, 100, 100);
const imageBlob = canvas.toBlob('image/png');
return imageBlob;
}
Graphicsクラスを使ってキャンバスを作成し、そこに四角形を描きます。
そして、画像をBlob形式でエクスポートして返しています。
GASで生成した画像をDiscordに送る
生成した画像をDiscordのチャンネルに送信するには、Webフックを使用します。
DiscordのWebフックの設定方法
Discordのチャンネルから「Webhooks」を設定し、URLを取得します。このURLがGASとの接続ポイントになります。
GASでWebフックを使う
取得したWebフックのURLを使って、GASからリクエストを送信します。
function sendImageToDiscord() {
const imageBlob = createImage();
const url = 'YOUR_DISCORD_WEBHOOK_URL';
const formData = {
'content': 'ここに画像を送ります:',
'file': imageBlob
};
const options = {
'method': 'post',
'payload': formData,
'muteHttpExceptions': true
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response);
}
ここでは、UrlFetchApp.fetch()メソッドを使って、DiscordのWebフックURLにPOSTリクエストを送ります。
リクエスト時に”file”として画像のBlobを送信しています。
GASとDiscordでの画像送信練習問題
GASを使用して「こんにちは、世界!」とテキストを書いた画像を生成し、それをDiscordにWebフックを介して送信する方法を考えてみましょう。
初めての挑戦でも安心してください、自分のペースでやってみてくださいね。
解答・解説
以下のスクリプトを参考にしてください。
function createTextImage() {
const canvas = new Graphics(200, 200);
canvas.fillStyle = '#FFFFFF';
canvas.fillRect(0, 0, 200, 200);
canvas.fillStyle = '#000000';
canvas.font = '20px Arial';
canvas.fillText('こんにちは、世界!', 50, 100);
const imageBlob = canvas.toBlob('image/png');
return imageBlob;
}
function sendTextImageToDiscord() {
const imageBlob = createTextImage();
const url = 'YOUR_DISCORD_WEBHOOK_URL';
const formData = {
'content': 'テキストを書いた画像を送ります:',
'file': imageBlob
};
const options = {
'method': 'post',
'payload': formData,
'muteHttpExceptions': true
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response);
}
まず、テキストを含む画像をGraphicsクラスで生成しました。canvas.fillText()はテキストをキャンバスに描画するために使います。
その後、作成した画像をDiscordに送るには、UrlFetchApp.fetch()を使用しています。この方法でDiscordに画像を送信できます。