はじめに
弊チームでは、朝会の司会を持ち回りでやっています。
しかし、当番の人が司会担当であることをちょくちょく忘れるので、Slackbotを作ってみました。
本記事ではその作り方を紹介します。
1. Botの用意
以下の記事を参考に、Botを用意してください。
https://qiita.com/k_ued/private/07978ede29a67be761bb
2. ユーザー情報をまとめる
スプレッドシートに当番にあたるユーザー情報をまとめます。
必要なデータは「ユーザー名」「ユーザーID」の2つです。
以下のようにまとめます。
3. スプレッドシートで当番を取得するGASを書く
「次の当番はだれか」を保持する必要があるため、D1セルにポインタを保持しています。
最初の1回目が誰かを示しておく必要があるため、ちょっとだけGSSを編集する必要があります。
GSS
コード
const GSS_ID = "スプレッドシートID";
const GSS_SHEET = "sheetA";
const POINTER_CELL = "D1";
const NUMBER_OF_PERSON = 3;
/**
* GSSから当番を取得する
*/
function getDutyUser() {
// シート取得
const book = SpreadsheetApp.openById(GSS_ID);
const sheet = book.getSheetByName(GSS_SHEET);
// ポインタ取得
const pCell = sheet.getRange(POINTER_CELL);
const p = pCell.getValue();
// ユーザー取得
const dutyUser = sheet.getRange(p, 1, p, 2).getValues();
// ポインタ追加
pCell.setValue((p % NUMBER_OF_PERSON) + 1);
return {
name: dutyUser[0][0],
id: dutyUser[0][1]
}
}
GSSの操作については以下の記事を参考にしてください。
https://qiita.com/k_ued/items/90e088368c2c653b75f3
4. メッセージを投稿するGASを書く
ライブラリの追加
SlackAPI用のライブラリを入れます。
GASを開き、左のメニューから「ライブラリ」の+ボタンを押下します。
スクリプトIDに以下の値をコピペし、検索したのち、追加します。
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
コード
function postSlackbot() {
// ボットのトークンを設定
const token = "xoxb-XXX";
const slackApp = SlackApp.create(token);
const dutyUser = getDutyUser();
// 投稿先
const channelId = "#hogehoge";
// 投稿するメッセージ
const message = `<@${dutyUser.id}> 今日の担当は${dutyUser.name}さんです。`
// postMessageメソッドでボット投稿
slackApp.postMessage(channelId, message);
}
5. GASのトリガーを設定
あとは好きな曜日、時間に投稿されるようトリガーを設定するだけです。
トリガーは左のメニューから設定できます。
トリガータブを開いたら、右下の「トリガーを追加」ボタンを押下します。
すると、ダイアログが開かれるので、以下のように設定します。
大事なのは以下の2点です。そのほかのメニューについてはお好みのものを選択してください。
- 実行する関数に[postSlackbot]を設定する
- 実行するデプロイに[Head]を選択する
注意事項
- 「平日だけ通知する」としたい場合は、トリガーを5つ設定する必要があります。
- 現状、当番の入れ替えやスキップ機能が備わっていません。今後追加していく予定です。