フォーム回答時にDiscord通知

フォーム回答時にDiscord通知

前の記事「メンバー管理シートとフォームの連携」までできてる前提ですすめる
連携済なのでメンバー管理シートをコピーするだけでGASもフォームもコピーされそうだけど、連携はやり直さないと使えないかも?しくみがわかればやりやすいと思うので見てみてください。

フォーム回答時にwebhookを使ってDiscordに通知を送るGAS

1.メンバー管理シートの 拡張機能>Apps Script を開く

先の記事で作ったプロジェクトが開くので、ここに追加していく。

ファイルの横にある+マークを押して、スクリプトを選択。

名前はなんでもいいけど、通知用だよってわかるとよさそう。

2.追加したgsを編集

埋め込みにもできるけど、アンケート回答が複数回予想されるので今回は普通のテキストで通知する。

function onSubmit(e) {
  // ① DiscordのウェブフックURLを設定
  const webhookURL = '●●●●●●●●'; 

  // Discordに表示する文章.
  let messageBody = '';

  // ② フォームの内容に応じて変える
  messageBody += `${e.namedValues['Name'][0]}`;
  messageBody += `さんの情報を更新しました(`;
  messageBody += `${e.namedValues['タイムスタンプ'][0]}`;
  messageBody += `)\n`;
  messageBody += `> ---------- \n`;
  messageBody += `> 【Combat Power】`;
  messageBody += `${e.namedValues['Combat Power'][0]}\n`;
  messageBody += `> ---------- \n`;
  messageBody += `\n`;

  const message = {
    'content': messageBody, 
    'tts': false,
  }

  const param = {
    'method': 'POST',
    'headers': { 'Content-type': 'application/json' },
    'payload': JSON.stringify(message)
  }

  UrlFetchApp.fetch(webhookURL, param);
}
①:DiscordのウェブフックURLを設定
  • Discordのサーバー設定 > アプリ 連携サービス から ウェブフック を作成
  • 通知を送るチャンネルを選択して、表示名やプロフィールイメージを設定しておく
  • 作成したウェブフックURLをコピーしてここに貼り付ける
② フォームの内容に応じて変える
  • 表示させる内容はフォームの必須項目にするとよい
  • 行を追加したり内容を追加したりお好みでどうぞ

3.トリガーを設定する

トリガーを開いて、右下にある

を押す

  • 実行する関数を選択:
    今回作ったGASの名前になってればok
  • 実行するデプロイを選択:
    Head(変更しない)
  • イベントのソースを選択:
    スプレッドシートから
  • イベントの種類を選択:
    フォーム送信時

に設定して、保存を押す。

4.テスト送信

試しにフォームを送信してみて、通知が来ればできあがりー

参考サイト

https://game.yosiakatsuki.net/discord-google-form-gas/