ちょっと豪華なDiscord通知
- 2022.06.05
- GoogleAppsScript
- spreadsheet
「スプシでメンバー管理」のシートができてる前提ですすめる
GASってすごいなあ。
目次
トリガーを利用して定期的に通知するGAS
アンケート回答記入してねみたいなことを月 1〜2回くらいBOTに言わせる、とか?
1.メンバー管理シートの 拡張機能>Apps Script を開く

先の記事で作ったプロジェクトが開くので、ここに追加していく。
ファイルの横にある+マークを押して、スクリプトを選択。
名前はなんでもいいけど、定期通知用だよってわかるとよさそう。
2.追加したgsを編集
function onDate() {
// ① DiscordのウェブフックURLを設定
const webhookURL = '●●●●●';
// ② 埋め込みの色を設定
const colorCode = parseInt("fff9f4", 16);
const message = {
// ③ メンションコードを設定
"content": "<@&ロールID> ",
"tts": false,
"embeds": [
{
// ④ タイトルを設定
"title": "タイトル",
// ⑤ ディスクリプションを設定
"description":"ディスクリプション",
// ⑥ フィールドを設定
"fields": [
{
"name": "フィールドの名前",
"value": "フィールドの要素"
}
],
// ⑦ 画像URLを設定
"image": {"url": "https://"},
"color": colorCode,
"footer": {
// ⑧ 埋め込みに設定するアイコンとテキストを設定
"icon_url": "https://",
"text": "テキスト"
}
}
]
}
const param = {
'method': 'POST',
'headers': { 'Content-type': 'application/json' },
'payload': JSON.stringify(message)
}
UrlFetchApp.fetch(webhookURL, param);
}①:DiscordのウェブフックURLを設定
- Discordのサーバー設定 > アプリ 連携サービス から ウェブフック を作成
- 通知を送るチャンネルを選択して、表示名やプロフィールイメージを設定しておく
- 作成したウェブフックURLをコピーしてここに貼り付ける
②〜⑧をお好みで設定
3.テスト送信
実行ボタンを押して、メッセージが送信できればOK。
4.トリガーを設定する

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

を押す

- 実行する関数を選択:
今回作ったGASの名前になってればok - 実行するデプロイを選択:
Head(変更しない) - イベントのソースを選択:
時間主導型 - 時間ベースのトリガーのタイプを選択
月ベースのタイマー - 日を選択
お好きな日付 - 時刻を選択
お好きな時間
に設定して、保存を押す。
スプシの特定のセルの内容をスプシ上に置いたボタンを押して通知するGAS
出欠リアクション押してない人にメンションしてBOTに言わせる、とか?
1.メンバー管理シートの 拡張機能>Apps Script を開く

先の記事で作ったプロジェクトが開くので、ここに追加していく。
ファイルの横にある+マークを押して、スクリプトを選択。
名前はなんでもいいけど、ボタンで通知するやつだよってわかるとよさそう。
2.追加したgsを編集
function notice() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = spreadsheet.getActiveSheet();
if (sheet.getName() == `Reaction`) {
// セル範囲を取得
const range1 = sheet.getRange("E3");
const range2 = sheet.getRange("J1");
const range3 = sheet.getRange("J2");
// ① DiscordのウェブフックURLを設定
const WEBHOOK_URL = '●●●●●';
// ② 埋め込みの色を指定
const colorCode = parseInt("c9daf8", 16);
const data1 = range1.getDisplayValue();
const data2 = range2.getDisplayValue();
const data3 = range3.getDisplayValue();
const message = {
"content": data1,
"tts": false,
"embeds": [
{
"title": data2,
// ③ DiscordのリアクションをしてほしいチャンネルのURLを設定
"description":"[▶︎ " + data3 + "](○○○○○)",
"color": colorCode,
"footer": {
// ④ 埋め込みに設定するアイコンとテキストを設定
"icon_url": "https://",
"text": "テキスト"
}
}
]
}
const param = {
'method': 'POST',
'headers': { 'Content-type': 'application/json' },
'payload': JSON.stringify(message)
}
UrlFetchApp.fetch(WEBHOOK_URL, param);
}
}
3.スプシに通知送信ボタン設置

図形描写してボタンを置く

図形を選択して右上のてんを押す
ここでスクリプトを割り当てを選択

今回作った notice を入力して確定
4.テスト送信
テストなので、リアクション不明を自分だけに設定してみよう。
ボタンを押して、通知が来ればできあがりー