目的
- 前手順でGoogle Apps Scriptの作成(カレンダーIDの設定含め)が完了しています
- この手順ではGoogleカレンダーの情報を1日分、Discordに書き込むGoogle Apps Scriptを作成する方法について説明します
- 必要なもの: Discordの該当サーバーのWebhook作成権限
目次
作業内容
WebhookのURLを取得
- 通知したいチャンネルの「チャンネルを編集」します
連携サービスの「ウェブフック」で「ウェブフックを作成」をクリックします
作成されたウェブフックをクリックし、「ウェブフックURLをコピー」をクリックします
- クリップボードにURLがコピーされるので、どこかにメモっておいてください
プロジェクト設定(Discord用の設定)
- Google Apps Scriptの画面に戻ります
- 歯車(プロジェクトの設定)をクリックします
- 「スクリプト プロパティを追加」をクリックします
- 表示されていなければ、「スクリプト プロパティを編集」を一度クリックしてください
- プロパティと値が入力できるようになるので、以下のように入力し、「スクリプト プロパティを保存」をクリックしてください
- プロパティ: DISCORD_WEBHOOK_URL
- 値: 前手順でコピーしたウェブフックURLを貼り付けてください
- 名前とアイコン画像の設定(オプション/設定しない場合デフォルトの名前、画像が使われます)
- オプション1)名前
- プロパティ: USER_NAME
- 値: 好きな名前を入力してください
- オプション2)アイコン画像
- プロパティ: AVATAR_URL
- 値: 好きなアイコン画像のURLを入力してください(ブラウザでアクセスできる画像のURLである必要があります)
動作確認
- ここまでで、カレンダーをDiscordに通知することができる状態となりました
- 左の
<>
マーク(エディタ)をクリックし、想定通り通知されるか確認してみます - 確認のため、Googleカレンダーで翌日に適当な予定をいくつか作成しておいてください
- 翌日予定が存在しない場合、何も起こらないため、正常に設定できているか確認ができません
- デバッグの右にあるプルダウンメニューに「notifyTaskDiscord」が表示されていることを確認し、「実行」をクリックしてください
- 承認ダイアログが表示されるので、「権限を確認」をクリックしてください
- Google Apps Scriptではデータをアクセスする際、あらかじめ承認が必要です
- アカウントを選択し、次のページでは目立たない「詳細」をクリックします(安全なページに戻るはダメです)
- 今回作成したGoogle Apps ScriptはGoogleが作ったものではないので、詳細を開き、続行します
- 左下のリンク(安全ではないページって書いてあるやつ)を押下します
- このGoogle Apps Scriptが使用するデータの使用許可を行います
- Googleカレンダーをへのアクセスと、外部サービスへの接続(WebhookのURLを使った投稿)
- 実行できてない場合は、再度「実行」をクリックしてください
- こういうログのが出て、何も起きない場合
- これまでの設定が正常に動作した場合、Discordに投稿されます
トリガーの設定(通知するタイミング)
- この手順で、いつDiscordに通知するかを指定します
- 左の時計マーク(トリガー)をクリックしてください
- 現在、なにもトリガーが存在しない状態です
- 右にある「トリガーを追加」をクリックします
- 実行する関数を選択: notifyTaskDiscord
- 実行するデプロイを選択: Head(デフォルト)
- イベントのソースを選択: 時間手動型(デフォルト)
- 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
- 時刻を選択: 通知したい時間
- エラー通知設定: エラーが発生したとき、通知されるメールのタイミング(なんでもOK)
- トリガーが設定されます
補足
- Google Apps Scriptの実行数のところで、処理にかかった時間やステータスが確認できます
失敗例
カレンダーの予定が見れない
- カレンダーの予定の有無まで見れない場合は、時間のみしか取得できません
- カレンダーの予定が見れるよう設定を変更してください
- Google Apps Scriptを実行しているアカウントとカレンダーのアカウントが一致してれば問題ないはず...