discordにグーグルフォームの投稿を連携したい
発端
問い合わせについて。
問い合わせ内容を、フリースタイルではなく一定の項目に沿って書かせたい
全体知にするために、投稿された内容はdiscordで共有したい
問い合わせ番号振ってね
可能なら、フォーラムチャットでやって
OK、やってみましょう
なにせ、chatGPTっていう味方もいるからね!
ベース(参考URL)
ぶっちゃけ、ほぼこれで出来る。
変更したところ①連番を振るなどの表記加工する
連番付与
連番自体は難しくない。
=ArrayFormula(if(B2:B="",,"Q" & text(row(B2:B)-1,"0000")))
こういう数式をA1に書けば、「行数-1を、"Q0000"の形式に変換する」ができる。
(1行目が見出し、2行目以降がデータ想定。
同様に、A列が連番、B列以降が中身の想定)
別シートで、連携情報生成
ほかにも加工したかったので、フォームと連携しているシートでどうこうするのではなく、同ブック別シートにした。
なので、利用するシートはシート名で明記。
この書き方で、「一番最後に書き込まれた行のA列からC列まで」の範囲指定が可能。
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("送付情報");
const lastRow = sheet.getLastRow();
const range = sheet.getRange(`A${lastRow}:C${lastRow}`);
※問い合わせ重複ないだろう前提の書き方なので、めっちゃ問い合わせがくるようになったら、「discord連携フラグ列」みたいなのを作った方がいいかも。
難点:トリガー設定
ここで迷ったのが、「トリガーはどう設定すればいいのか」ということ。
変更されたとき?とか色々変えたけどうまくいかず…
結論は「フォーム送信時」で大丈夫だった。
フォーム送信時のイベントで、フォームの回答1シートに書きこまれる→その時点で送付情報シートにも反映される→送付情報シートの内容をもとにdiscordに反映する…という流れなのかな。
計算式が早いからなりたっているだけかも?
変更したところ②フォーラムチャンネルなので、スレッド名を明記
Exception: Request failed for https://discord.com returned code 400. Truncated server response: {"message": "Webhooks posted to forum channels must have a thread_name or thread_id", "code": 220001} (use muteHttpExceptions option to examine full response)
とのことなので、json_dataの要素に以下を追加
"thread_name": "My Thread"
参考:
変更したところ③ メンションをつける
担当者にわかりやすいように、メンション付与。
ユーザ名ではなく、内部で保持しているIDを書くらしい。
ここ参考。
変更したところ④ 表記にembedsを使う
情報がおおいので。
embedsについて、概要はは上の記事参考。
もっと技術的なことはこちらの記事。
けっこうごちゃごちゃ大変で…
いい練習サイトがあったので、また見つけたら記載する。
jsonとして形式があっているかはここ使って確認
結論
上司に「いいじゃん」をもらえました!
万歳!
有用な情報をweb上で開示してくださる方々に感謝を。
ハブ記事としてうちの記事がお役に立てれば幸いです。
この記事が気に入ったらサポートをしてみませんか?