📤
Google Formに送られた内容をDiscordに自動送信する
匿名のフォームを作りたくなって(作る必要が出てきて)Google FormとDiscord Webhookを組み合わせて匿名フォームを作ったのでそれの備忘録です
コード
const webhookUrl = "https://discord.com/api/webhooks/****"
function myFunction() {
const form = FormApp.openById("****")
const formResponses = form.getResponses()
const latest_response = formResponses[formResponse.length-1].getItemResponses()
const kanji = latest_response[0].getResponse()
const yomikata = latest_response[1].getResponse()
const description = latest_response[2].getResponse()
const message = {
"content": ...
}
UrlFetchApp.fetch(webhookUrl, {
"method": "POST",
"headers": {
"Content-Type": "application/json",
},
"payload": JSON.stringify(message),
})
}
何をしているのか
const webhookUrl = "https://discord.com/api/webhooks/****"
WebHookのURLの定義です。(WebhookのURLの取得方法)
(以下myFunction
内がフォームに回答が送信された時に行われる関数)
const form = FormApp.openById("****")
const formResponses = form.getResponses()
form
が回答を取得したい先のフォームです。"****"
にはフォームのIDが入りますが、これはフォーム編集画面のURLであるhttps://docs.google.com/forms/d/****/edit
の****
の部分に当たります。
そして、formResponses
にはフォームに集まった回答全てが格納されます
const latest_response = formResponses[formResponse.length-1].getItemResponses()
ここではフォームで最後に送信された回答を取得し、その回答で集まった内容を取得しています。
const kanji = latest_response[0].getResponse()
const yomikata = latest_response[1].getResponse()
const description = latest_response[2].getResponse()
それぞれフォームの設問に対する回答を取得しています。回答は設問の上からの順番で配列に格納されています
const message = {
"content": ...
}
Discordに送るメッセージですEmbed Generatorを使うと楽に作れます
UrlFetchApp.fetch(webhookUrl, {
"method": "POST",
"headers": {
"Content-Type": "application/json",
},
"payload": JSON.stringify(message),
})
webhookを発火させるコードです。Google Apps Scriptではfetch APIをそのまま使えないっぽいのでUrlFetchApp
を使用する必要があります。
Discussion