LoginSignup
2
2

More than 1 year has passed since last update.

【GAS + Slackbot】毎朝担当を通知する当番botをつくる

Last updated at Posted at 2022-03-31

はじめに

弊チームでは、朝会の司会を持ち回りでやっています。
しかし、当番の人が司会担当であることをちょくちょく忘れるので、Slackbotを作ってみました。
本記事ではその作り方を紹介します。

1. Botの用意

以下の記事を参考に、Botを用意してください。
https://qiita.com/k_ued/private/07978ede29a67be761bb

2. ユーザー情報をまとめる

スプレッドシートに当番にあたるユーザー情報をまとめます。
必要なデータは「ユーザー名」「ユーザーID」の2つです。
以下のようにまとめます。

image.png

3. スプレッドシートで当番を取得するGASを書く

「次の当番はだれか」を保持する必要があるため、D1セルにポインタを保持しています。
最初の1回目が誰かを示しておく必要があるため、ちょっとだけGSSを編集する必要があります。

GSS

image.png

コード

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のトリガーを設定

あとは好きな曜日、時間に投稿されるようトリガーを設定するだけです。
トリガーは左のメニューから設定できます。

2022-03-31_14h26_24.png

トリガータブを開いたら、右下の「トリガーを追加」ボタンを押下します。
すると、ダイアログが開かれるので、以下のように設定します。

image.png

大事なのは以下の2点です。そのほかのメニューについてはお好みのものを選択してください。

  • 実行する関数に[postSlackbot]を設定する
  • 実行するデプロイに[Head]を選択する

注意事項

  • 「平日だけ通知する」としたい場合は、トリガーを5つ設定する必要があります。
  • 現状、当番の入れ替えやスキップ機能が備わっていません。今後追加していく予定です。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2