Nの外部記憶

作ったアプリや、作成時の備忘録を書くブログ。やりたいことが多すぎるッ!

Discordのwebhookを利用してgoogleフォームの内容を送信

管理しているdiscordサーバ上のメンバーが抱えている改善点や問題等を拾うために、 問い合わせフォームを作成したので、その設定等の備忘録。

やりたいこと

  • 基本的に匿名で問い合わせできること
  • 問い合わせを後から整理・確認ができること
  • 問い合わせ内容をdiscord内で確認ができること
  • 問い合わせ内容は、管理者だけが確認できること

利用するもの

設定手順

  1. googleフォームで問い合わせフォーマットを作成
  2. discordのwebhookを取得
  3. GASでフォーム内容を送信するスクリプト作成

1. 問い合わせフォーム作成

以下のサイトにアクセスする。 https://www.google.com/intl/ja_jp/forms/about/

googleフォームを使ってみる」を選択。 undefined.jpg

「新しいフォームを作成」から「空白」を選択。 undefined.jpg

今回はこんな感じでつくりました。 undefined.jpg

匿名で問い合わせできるように、フォームの設定で「メールアドレスを収集する」のチェックボックスを外します。(おそらくデフォルトで外れているはず) undefined.jpg

問い合わせフォーム作成はこれで完了

2. webhook取得

予め「管理者」のロールを作成しておきます。
discordに、プライベートチャンネルとしてテキストチャンネルを作成します。
その際、チャンネルにアクセスできるロールとして、作成しておいた「管理者」のロールを選択しておきます。
undefined.jpg

作成したチャンネルの設定を開き、「ウェブフック」を選択。
「ウェブフックを作成」を選択します。 undefined.jpg

「名前」「画像」を適宜設定します。
今回は、通知することだけが目的なので、「画像」は特に設定せずに、「名前」を”通知”にしました。
ウェブフックURLをコピーし、後で使うのでテキストファイル等にメモしておきます。
「保存」をクリックして設定完了。 undefined.jpg

3. 送信スクリプト作成

作成した問い合わせフォームに戻ります。
「回答」タブをクリックし、四角い緑のマークをクリックしスプレッドシートと連携させます。
undefined.jpg 連携させたスプレッドシートのメニューから「ツール > スクリプトエディタ」を選択。
以下の内容を記載する。
※「your_webhook」を取得したwebhookに変更すること。

function send_discord(e) {
  
  var webhook = "your_webhook";
  
  var item = e.values[1];
  var user_name = e.values[2];
  var occurrence_time = e.values[3];
  var contact = e.values[4];
  
  if(!user_name){
    user_name = "匿名"
  }
  
  if(!occurrence_time){
    occurrence_time = "なし"
  }
  
  var send_msg = '';
  send_msg += '問い合わせが届きました。\n';
  send_msg += '=======================\n';
  send_msg += '●項目: '+item+'\n';
  send_msg += '●問い合わせ者: '+user_name+'\n';
  send_msg += '●発生日時: '+occurrence_time+'\n';
  send_msg += '【問い合わせ内容】\n';
  send_msg += contact+'\n';
  send_msg += '=======================\n';
  
  var json_data = {
    username: "通知",
    content: send_msg
  }
  
  var payload = JSON.stringify(json_data);
  var options = {
   "method" : "post",
   "contentType" : "application/json",
   "payload" : payload
  };
  UrlFetchApp.fetch(webhook, options);
}

次に、このスクリプトが動作するトリガーを設定する。
スクリプトエディタのメニュー下にある、時計のようなマークを選択。 undefined.jpg

遷移した先のページにて、「トリガーを追加」を選択。
以下の内容で設定。「イベントの種類を選択」で「フォーム送信時」を選択することで、
メンバーが問い合わせしたタイミングでスクリプトが動作する。
undefined.jpg これで完成!!

フォームの共有

問い合わせフォーム作成画面の右上にある「送信」を選択。 undefined.jpg

送信方法を選択できるので、リンクのタブを選択。
「URLを短縮」にチェックを付ける。このURLをdiscordサーバ上で適宜共有する。 undefined.jpg

テスト

問い合わせするとこんな感じで届きます。
undefined.jpg

特にこだわる必要性がなかったので、とてもシンプルなものにしました。
もっとwebhookでいろんなことがしたい場合は、以下の記事を参考にしてみてください。
DiscordにWebhookでいろいろ投稿する