目的
- 前手順でGoogle Apps Scriptの作成(カレンダーIDの設定含め)が完了しています
- この手順ではGoogleカレンダーの情報を1日分、Slackに書き込むGoogle Apps Scriptを作成する方法について説明します
- 必要なもの: Slackの該当サーバーのWebhook作成権限(アプリ作成権限)
目次
作業内容
WebhookのURLを取得する方法について
- Slackにリクエストして投稿するWebhookのことをIncoming Webhookといいます
- Incoming Webhookは、Slack Appとして作成する新方式とカスタムインテグレーションから設定できる旧方式の2パターンあります
どちらかの方法でURLを取得してください
- (1)新方式 *こちらの方が難しいですが、長く使えます
- slack api - Your Appsを開きます
- Create New Appをクリックします
- From scratchをクリック
- App Name: 表示させたい名前
- ワークスペースを選択
Incoming Webhooksを選択
- Activate Incoming WebhooksをONにします
- Add New Webhook to Workspaceをクリックし、投稿先を選択します
- 正常にWebhookが作成されたら、Webhook URLをコピーします(あとで使うのでメモしておいてください)
(2)旧方式 *こちらの方が簡単ですが、今後使えなくなるかもしれません
- slack app directoryを開き、カスタムインテグレーションを選択します
- ワークスペースの選択が必要かもしれません
- Incoming Webhook を選択
- Slackに追加し、通知したいチャンネルを選択します
- Webhook URLをコピーします(後で使うのでどこかにメモっておいてください)
- URLを全部選択してコピーするようにしてください
- なお、過去作ったWebhookでいい場合、設定タブからWebhook URLを取得できます
この手順でわかりづらい場合、下記の記事など参照してください
プロジェクト設定(Slack用の設定)
- Google Apps Scriptの画面に戻ります
- 歯車(プロジェクトの設定)をクリックします
- 「スクリプト プロパティを追加」をクリックします
- 表示されていなければ、「スクリプト プロパティを編集」を一度クリックしてください
- プロパティと値が入力できるようになるので、以下のように入力し、「スクリプト プロパティを保存」をクリックしてください
- プロパティ: SLACK_WEBHOOK_URL
- 値: 前手順でコピーしたウェブフックURLを貼り付けてください
- Slackの場合、名前とアイコン画像は新方式と旧方式で異なります(たぶん)
- 新方式の場合、アプリで設定している名前とアイコン画像が使用されます(たぶん)
- 旧方式の場合、デフォルトの名前とアイコン画像が使用されます(たぶん)
動作確認
- ここまでで、カレンダーをSlackに通知することができる状態となりました
- 左の
<>
マーク(エディタ)をクリックし、想定通り通知されるか確認してみます - 確認のため、Googleカレンダーで翌日に適当な予定をいくつか作成しておいてください
- 翌日予定が存在しない場合、何も起こらないため、正常に設定できているか確認ができません
- デバッグの右にあるプルダウンメニューから、「notifyTaskSlack」を選択し、「実行」をクリックしてください
- 承認ダイアログが表示されるので、「権限を確認」をクリックしてください
- Google Apps Scriptではデータをアクセスする際、あらかじめ承認が必要です
- アカウントを選択し、次のページでは目立たない「詳細」をクリックします(安全なページに戻るはダメです)
- 今回作成したGoogle Apps ScriptはGoogleが作ったものではないので、詳細を開き、続行します
- 左下のリンク(安全ではないページって書いてあるやつ)を押下します
- このGoogle Apps Scriptが使用するデータの使用許可を行います
- Googleカレンダーをへのアクセスと、外部サービスへの接続(WebhookのURLを使った投稿)
- 実行できてない場合は、再度「実行」をクリックしてください
- こういうログのが出て、何も起きない場合
- これまでの設定が正常に動作した場合、Slackに投稿されます
- (1)新方式パターン
- (2)旧方式パターン
- 新方式と書いてあることが違いますが、備考の記載有無です。こちらは入れてない状態で実行しています
トリガーの設定(通知するタイミング)
- この手順で、いつSlackに通知するかを指定します
- 左の時計マーク(トリガー)をクリックしてください
- 現在、なにもトリガーが存在しない状態です
右にある「トリガーを追加」をクリックします
- 実行する関数を選択: notifyTaskSlack
- もし、Slack,Discord両方投稿したい場合、両方Webhookを設定した状態で「notifyTaskDiscordAndSlack」を選択してください
- 実行するデプロイを選択: Head(デフォルト)
- イベントのソースを選択: 時間手動型(デフォルト)
- 時間ベースのトリガーのタイプを選択: 日付ベースのタイマー
- 時刻を選択: 通知したい時間
- エラー通知設定: エラーが発生したとき、通知されるメールのタイミング(なんでもOK)
- 実行する関数を選択: notifyTaskSlack
トリガーが設定されます