見出し画像

ディスコ―ドでbotを作ったらTwitter(X)で作るよりも簡単にできた。

定時になったらスプレッドシートに登録した文章をランダムで投稿する。

必要なもの
・Discodeサーバー
・Googleアカウント

これだけ!


手順1 Googleスプレッドシートでデータを作成。

まぁ、何がなくともまずデータ。作ってみましょうサックリと。

ちなみに、文章の途中で改行したい場合や、分の途中で定型文を挟みたい場合は数列に分けて書いておくとよい。

例)

手順2 GASにコードを書く

Google Apps script (GAS)にアクセスして、新しいプロジェクトを作成。

もともと書いてあるコードを消して、

以下のコードをコピペ!

function postRandomMessageToDiscord() {
  var spreadsheetId = 'dとedit#gid=0 の間の部分';  // スプレッドシートのIDを入力
  var sheetName = 'シート1';  // シート名を入力
  var rangeA = 'A2:A3';  // A列の範囲を指定
  var rangeB = 'B2:B3';  // B列の範囲を指定

  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
  var dataA = sheet.getRange(rangeA).getValues().flat();
  var dataB = sheet.getRange(rangeB).getValues().flat();

  // ランダムなインデックスを選択
  var randomIndex = Math.floor(Math.random() * Math.min(dataA.length, dataB.length));

  // A列とB列からランダムな要素を選択して組み立て
  var randomMessage = "定型文1" + dataA[randomIndex] + "改行は\n " + dataB[randomIndex];

  // Discord への投稿処理を実装(Discord Webhook を使用する)

  // Discord Webhook URL を取得して設定
  var discordWebhookUrl = 'ディスコ―ドのウェブフックURL'; // webhookIDを入力

  // メッセージの内容を組み立て
  var payload = {
    content: randomMessage
  };

  // HTTP リクエストを送信
  var options = {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify(payload)
  };
  UrlFetchApp.fetch(discordWebhookUrl, options);
}

chatGPTくんにコードを書いてもらったよ! チョー便利!
以下、改造ポイント

1. スプレッドシートのID

スプレッドシートのURLの https://docs.google.com/spreadsheets/d/ と /edit#gid=0 の間の部分

2. シート名

3. 列の範囲

見出し行は飛ばして、最初の行と最後の行を書く。

C列以降もある場合は、
「var rangeA = 'A2:A3'; 」と
「var dataB = sheet.getRange(rangeB).getValues().flat();」をコピペしてアルファベットを変える。

4. A列とB列からランダムな要素を選択して組み立て

投稿されるメッセージを組み立てます。

dataA[randomIndex] はA列、dataB[randomIndex]はB列。C列以降もある場合はコピペしてアルファベットを変えましょう。

定型文の部分は””で囲みます。
・改行する場合は \n です。
・太字の場合は **太字にしたい文字**

ちなみに例のリンク集はこのように書いています。

var randomMessage = "おはようございます!\n今週のテーマは【" + dataA[randomIndex] + "】\n『" + dataB[randomIndex]+"』のサイトをチェックしてみましょう!\n" + dataC[randomIndex];

するとこうなります

5. Discord Webhook URL

自分がWebhookを弄れる権限を持っているサーバーで、投稿したいチャンネルの歯車マーク(チャンネルを編集)⇒連携アプリ⇒ウェブフック

新しく作るか、テスト用のウェブフックをクリックして、「ウェブフックのURL」のボタンをクリック⇒コード内にペースト

手順3 テストする

コードの上にあるアイコンをクリックして保存した後、実行をします。

初めて実行するとき、「認証が必要です」とダイアログがでるので「権限を確認をクリック」

「このアプリは確認されていません」とダイアログが表示されますので慌てず「詳細」をクリックします。


すると「(安全でないページ)に移動」というリンクが表示されますが、怖がらずに安全でないページに移動してください。


そして「スクリプトがGoogleアカウントへのアクセスをリクエストしています」を許可しましょう。


上手くいけば、チャンネルに投稿されます。

手順4 トリガーを設定

左の目覚まし時計っぽいマークをクリック

トリガー

トリガーを追加する。

時間主導型で週ベースタイマーに設定。曜日と時間帯を選ぶと、その曜日と時間帯に週一回自動投稿します。

分ベースは〇分おき
時間ベースは〇時間おき
日ベースは一日1回
月ベースは月一回

ただし、月ベースでも「毎月末日」に設定するときはさらに特殊な設定が必要ですので、各自調べてください(丸投げ)

というわけで レッツトライ

よろしければサポートをお願いいたします。頂いたサポートは執筆活動の資金にいたします。