0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GAS】ランダムでお掃除当番を選任してSlackに投稿するBotの作り方

Last updated at Posted at 2025-02-23

はじめに

弊社では可能なことはできる限り自動化する方針で雑務を調整しています。
その中の一つとして、毎週のお掃除当番をそれぞれ選任するBotを運用しているのですが、なかなか便利なので備忘録も兼ねて残しておこうと思います。

Botの実装方法

今回のゴールとして、毎週決まった曜日の決まった時間にBotが実行されるようにします。

また、Botの実装はGAS(Google Apps Script)を使用して実装します。

実装の詳細は以下になります。

function handler() {
  // Slack の "メンバーID" を指定する
  const members = [
    "AAAAAA", 
    "BBBBBB", 
    "CCCCCC", 
    "DDDDDD", 
    "EEEEEE"
  ];

  for(var i = members.length - 1; i > 0; i--){
    var r = Math.floor(Math.random() * (i + 1))
    var tmp = members[i]
    members[i] = members[r]
    members[r] = tmp
  }

  const pair = 
`
来週のお掃除担当は<@${members[0]}>さんと,<@${members[1]}>さん
`;

  const incomingWebhookUrl = "Slackで投稿したいチャンネルのWebHookUrlを指定してください";
  // Slack に投稿
  UrlFetchApp.fetch(incomingWebhookUrl, {
    "method": "post",
    "contentType": "application/json",
    "payload": JSON.stringify(
      {
        "text": pair,
      }
    )
  });
}

実装は以上になります。
選任ロジックや投稿する際のメッセージはあくまでサンプルとしての内容になっているので、ご利用の際にそれぞれに合った実装で調整してあげてください。

また注意点として、コメントにもありますがメンションをつける場合には必ずメンバーIDを指定するようにしてください。
メンバーIDを指定しないと、日本語のユーザーなど一部のメンバーだけメンション化されないみたいな問題が起きます。

上記を実装したらあとは、画面左のトリガーから定期実行の間隔などを指定してあげる形になります。
設定の内容は以下を参考にしてみてください。

スクリーンショット 2025-02-23 18.35.23.png

Botの設定は以上です、GASめちゃくちゃ便利です。

さいごに

最近体重が落ちなくなってきました、悲しい

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?