基本情報技術者試験が近づいてきたので試験日までカウントダウンしてくれるbotをGoogle Apps ScriptとSlackを使って作ってみました。カウントダウンツールやアプリはすでにもあると思いますが、よく使うSlackのワークスペースに通知を送るようにしたかったので勉強も兼ねて作成しました。
使うツール
- Google Apps Script
- Slack
作成するbotについて
一日一回「FE試験まであとXX日です」といったメッセージを送る
- Google Apps Scriptに書いたプログラムを時限実行(毎日9時〜10時)
- Slackとの連携 #countdown チャンネルにメッセージを送信
#手順
-
- SlackAppでbotを作成
-
- Google Apps Scriptを作成
-
- 時限実行の設定
各手順を箇条書きで説明していきます。
1. SlackAppでbotを作成
-
https://api.slack.com/apps にアクセスしCreate New Appをクリック
-
botの名前、ワークスペースを指定しCreate Appをクリック
App Nameは後からでも変更可能。
Development Slack Workspaceでbotを使いたいSlackのワークスペースを選択します。
-
左メニューからOAuth & Permissionsをクリック
-
ScopesのSelect Permission Scopesを設定
OAuth Access Tokenを取得する前に、Scopeを設定する必要があります。
今回はメッセージを送信するだけなので
Send messages as [botの名前] を選択し、Save Changesをクリック。
-
OAuth Access Tokenを控える
Scope設定後、Install App to Workspaceからbotの権限を設定するとOAuth Access Tokenと表示されるので控えておきます。
※ Google Apps Scriptで使います
2. Google Apps Scriptを作成
-
Google Apps Scriptを開きます
GoogleアカウントにログインしGoogleドライブを開き、「+新規」をからGoogle Apps Scriptを開きます。ない場合は「+新規」>「その他」>「アプリを追加」より追加できます。 -
ライブラリの追加
リソース > ライブラリ をクリック。
ライブラリを追加にM3W5Ut3Q39AaIwLquryEPMwV62A3znfOO
を入れて追加。
バージョンは22にしました。
- プロパティの設定
Google Apps Scriptのプロパティーにアクセストークンを設定しました。
ファイル>プロジェクトのプロパティ>スクリプトのプロパティ
keyをSLACK_ACCESS_TOKENとしvalueに控えておいたOAuth Access Tokenを設定します。
- ソースを書く
試験当日に0日となるように書いています。
var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
function countdown() {
// Slackapp インスタンス生成
var slackApp = SlackApp.create(token);
// チャンネル
var channelId = "#countdown";
// 試験名
var examName = 'FE試験';
// 試験日
var examDate = new Date('2019/10/20 23:59:59');
// 本日日付
var today = new Date();
// 試験日までの日数を取得
days = Math.floor((examDate - today) / (24*60*60*1000));
// メッセージを送信する
if(days >= 0){
var message = examName + 'まであと' + days + '日です';
var options = {
}
slackApp.postMessage(channelId, message, options);
}
}
Google Apps Scriptはjavascriptをベースに作成されていますが、全てのjs関数が使える訳ではないそうです。
再生ボタンをクリックするとプログラムを実行できます。
警告文が表示されたら詳細>安全ではないページに移動からリクエストを許可します。
3. 時限実行の設定
#参考にさせていただきました