公開日2019.04.11
最終更新日2022.09.26
前回の続きより、実装手順を公開。
実装手順についてもそこそこの量になるため記事を分割して公開予定。
仕様
特定の日時にSlackへタイピングスコア提出の案内送信
- タイピングスコア提出フォームの作成
- 投票結果用スプレッドシート作成
- 特定の日時にスプレッドシートからデータを取得し、加工、Slackへ送信。取得時は過去3ヶ月分のデータを取得
今回公開する内容は
特定の日時にSlackへタイピングスコア提出の案内送信
まで。
この手順を細分化すると
- slack api tokenの生成
- 自動送信プログラムの作成
スコアのデータについてはスプレッドシートで管理することを想定して、
googleAppsScriptで実装。
slack api tokenの生成
そもそも api tokenって何?ってなると思いますが、
記事書く上で色々調べていたら非常にわかりやすい記事があったので、
参照してみてください。
Quiita | 一番分かりやすい OAuth の説明 @TakahikoKawasaki
またapi tokenの取得手順は下記を参考にしました。
(英語なので読むのは大変です。。。)
Quiita | Slack API 推奨Tokenについて @ykhirao
slack apiにアクセス
アプリ作成
「Create New App」を押下。
- App Nameを設定
- 適応するワークスペースを選択
- Create Appを押下
scopesの設定
スコープ
「OAuth & Permissons」ページに遷移
Scopesのセクションまでスクロールする。
「SelectPermission Scopes」から
Send messages as {App名}
を選択
その後、「Save Changes」を押下。
APIのメソッドリファレンスは下記を参照することができる。
https://api.slack.com/methods
Slackにアプリをインストール
1.OAuth & Permissonsのページから「Install App to Workspace」を押下
2.「許可する」ボタンを押下
3.下記のようなページが表示されたらapi token 生成完了
GoogleAppsScript(GAS)でプログラム作成
GASの設定についてはばーいな氏の記事を参照
ソースコードを下記に設定
function myFunction() {
//送信メッセージ
var mss = "タイピング提出の案内です。\n";
mss += "0月0日に提出してください。\n";
//送るパラメータの定義
var payload = {
"token" : "tokenを入力",
"text" : mss,
"channel" : "チャンネル名を入力"
}
var options = {
"method" : "POST",
"payload" : payload
}
UrlFetchApp.fetch("https://slack.com/api/chat.postMessage", options);
}
実行したら無事届きました。
トリガーの設定
これでSlackとスプレッドシートの連携部分ができましたが、
特定の日時を指定してGASの送信プログラムを自動実行手順を紹介
1.スクリプトエディタから 編集>現在のプロジェクトのトリガー を選択
2.下記画面になったら左下「トリガーを追加」を押下
3.下記で設定
実行する関数を選択
→実行させたい関数を選択
イベントのソースを選択
→時間主導型
時間ベースのトリガーのタイプを選択
→月ベース
日を選択
→1日
時刻を選択
→午前9時~10時
※時間ベースは月単位から分単位ごとまで細かく設定可能。
※時刻は「1時間の間で実行するよ」という仕様。
で保存を押下で完了。