概要
みなさま、Discordは使っているでしょうか? おそらくお友達等と使っているものと思います。今回、個人用のDiscordのサーバーに導入すると便利になるGoogle Apps Script付きのGoogle Spreadsheetについてお話しします(導入方法)。
個人で(無料で)使う分にはSlackよりも断然Discordのほうが使いやすいので、ちょっと興味が湧いた方は是非導入してみてくださいっ!
導入するとどうなるか
- Steamのフリーウィークエンドのゲームについて投稿されます
Steamでは有料販売されているゲームを期間限定で無料プレイできるものがあります。その一つがフリーウィークエンドです。でも2023年には壊れたかも。直せる人は直してみてください(多分、想定外の形式になったのだと思います)。 - 指定したキーワードを含むRadikoの番組について投稿されます
- RSSで指定したキーワードを含む記事が投稿されます(キーワード指定なしも可)
列挙してたらしょぼくて挫けそうです...
目次
試してみる
Googleスプレッドシートをコピーする
RSS2Discord_webscr - Google スプレッドシート
ファイル > コピーを作成 を行い、自分のGoogleドライブにコピーを作成する(GASもコピーされる)。
ドキュメントをコピー
Settingシートに設定を書き込む
- webhooks: Discordで取得したWebhook URLを記載(デフォルトで使用されるもの)
- userName: 投稿で使いたい名前を記載
- token: 未使用なのでそのままで良いです(背景色紫のセルに入力するイメージ)
RSSシートに設定を書き込む
- Type:
RSSか、特殊なものを指定できます。
RSSの場合、RSSを指定ください。
STEAMの場合、フリーウィークエンドをなんとなく通知できます。
RADIKOの場合、ラジコ番組表を検索します。
ココにないのが欲しかったら、自分で追加しよう! - URL:
RSSのURLやRadikoで検索したい文字列
Radikoの場合、「<検索したい文字列>;<futureかpastか未指定>;<都道府県名orJP+県コード>)」の形式で記載すること!
例(RSS): https://www.nhk.or.jp/rss/news/cat1.xml
例(Radiko): 青葉市子;;静岡県 または、青葉市子;;JP22 - Title:
タイトルとして表示するものを記載します。 - Webhook URL:
Webhook URLを記載します。デフォルトで良い場合は未記載でOK。 - InterestingThingsFilter:
全部投稿したい場合は「FALSE」を指定します。基本的に興味ない記事が多いけれど、興味があるキーワードがある場合「TRUE」を指定します。興味のあるキーワードは「InterestingThingsシート」のA列に列挙します(静岡と同じような感じで)。
下記は投稿例です。Titleに「Radiko(青葉市子)」と書いてあるので、From:の部分がそうなっています。
仮で実行してみる
RSSDiscordというメニューが右端にあります。そちらから簡単に実行できます。
実行結果(ログやエラー)については、後述のApps Scriptから見ることができます。
- 初めて実行する時は承認が必要です
承認作業(ボタンぽちぽちして承認してください)
- 続行します
- 自分のアカウントを選択
- Googleが確認したものではない旨表示されます
- 詳細を選択します
- 注意書きを読み、許可します(Google Driveやら使うよって意味です。ファイル削除などは行いませんので安心してください)
最初の実行はキャンセルされてしまう気がするので、ダイアログがあったら一度キャンセルしてもう一度実行します。Webhookが適切に登録されている場合、Discordに投稿されたはずです(なにも登録されていない場合、ReaderシートのE列に赤字で記載されます)。
Apps Scriptを開く
- スクリプトの編集
- トリガーの設定(スクリプトを実行するタイミング等を指定)
- 実行結果の確認(実行数, ログ, エラー等)
Google Spreadsheetのメニューの右側にある、拡張機能の「App Script」を選択します(読み込みが遅い場合があります。右下のデータ探索が表示されたら大体アクセスできます)。
今回、1時間に1回起動するようなトリガーを設定してみます。
上から3つめの「トリガー」を選択肢、右下の「トリガーを追加」ボタンを押します。
実行する関数は「debugStart」がオススメです(実行時間やログが出力されるため)。
「イベントのソースを選択」で「時間主導型」を選択肢、「時間ベースのタイマー」を選択し、「1時間おき」を選択。保存します。
以下のように表示されると思います。これで1時間毎に実行されるはずです。
その他細かい情報
- TitleシートのA列に正規表現で文字を書いておくと、投稿対象外にできます
- UrlシートのA列に正規表現で文字を書いておくと、投稿対象外にできます
- InterestingThingsシートのA列に正規表現で文字を書いておき、
RSSシートのE列が「TRUE]にすると、InterestingThingsに該当するものが存在する場合のみ、
投稿されます
終わりに
このツールを作って3年以上経過していますが、便利に使っているので記事にしようかなぁと思っていました。Radikoで好きなアーティストが番組に参加しているかチェックするのが簡単になり、とても良いと思います。同じようなノリで機能を拡充していけば何でもできそうでいい感じです。是非この記事を読んだあなたがDiscordを最強の情報収集ツールにする256の方法のうちの1つを実装してみてください。こちらからは以上です。
どうでも情報
- RSSについてはDiscord以外で有名なチャットツールでは普通に登録できます
- Slackの場合は/feed subscribe <URL> で登録
- Teamsの場合はチャンネルにコネクタを追加(RSSを選択/解除方法知らない...)
無料版SlackとDiscordの機能比較(個人の意見です!)
関連記事
- RSSを利用するとどういい感じなのか書きました。
- GoogleカレンダーをDiscordに通知する方法について書きました(2記事読んで対応する必要あり。Google Apps Script, Discord Webhookのみ利用)
- YouTubeやニコニコ生放送、TwitCasting(ツイキャス)などの放送が開始されたら通知させることも可能です(Botを導入すれば)
- 2023/12現在では100サーバー導入済のため使えないかも...
- Botを導入しつつ使ってないサーバーも多そうなので、使ってないサーバーから削除してほしいですね...
- ちょっと違う系
- Google Formと連携し、問い合わせがきたらWebhookでDiscordに投稿させることも可能
-
- PC内の音(マイクなど)を音声認識させて、その結果をDiscordに投稿させることもできます
-
- Slackと連携し、DiscordとSlackで書き込みをおおむね同期させることもできます
- 同期させればSlack側のデータが消えても、Discord側からは見られるので安心ですね
- ただ、Slackに貼られた画像は持ってこない実装にしてあるので、それもやりたい場合はソース修正が必要です(環境変数で挙動を切り替えられるようにしてもよかったですね)
- Slackと連携し、DiscordとSlackで書き込みをおおむね同期させることもできます
参考
- このブログが無かったらこの記事作らなかったと思います
- RSS部分については上記記事に9割依存しています
- Slack面白いなぁと思ったのと同時に、無料版だと10,000件までしか使えない 2023年現在では過去90日間しか見れない のでDiscordのほうが便利ではないかと思いました
- Slackの機能比較より