Konifar's WIP

親方!空からどらえもんが!

100日後にアーカイブされるSlackチャネル

100日間コメントのないSlackチャネルを自動でアーカイブするGoogle Apps Scriptを書きました。

f:id:konifar:20211120145506p:plain

github.com

モチベーション

  • 90日以上コメントがないチャネルが全体の20%くらいになっていたので年末の大掃除をしたかった
  • google/clasp を使ってみたかった

できること

  1. SlackのPublicチャネル一覧を取得し、public_channelsシート (サンプル)に記載
  2. 95日以上コメントのないチャネル一覧をarchive_warning_channelsシート (サンプル)に記載
  3. archive_warning_channelsシートに記載されてから5日以上経ったチャネルを自動でアーカイブ

動かし方

  1. Slackチャネル一覧サンプルシート と同じシート、フォーマットのSpreadSheetを用意する
  2. README.md#setup を参考にセットアップする
  3. Slack API で使うToken や Botを用意する
  4. GitHub SecretsScript properties を設定する
  5. clasp push で Apps Scriptを反映させ、execute() を実行する

補足

  • Slack APIをいくつか 使います
    • アーカイブできる権限を持ったBot Tokenや、チャネルへの招待ができるTokenが必要です
  • 初回実行時に100日を超えていたとしてもいきなりアーカイブされることはありません
    • 警告リストに追加されてから5日後にアーカイブされる仕組みです
  • アーカイブされたくないチャネルは ホワイトリスト として除外できます
  • Apps Scriptに時間ベースのトリガーを設定しておくと、毎日チェックしてSlackに結果を報告してくれます

一度自動化しておくと考えることが減ってよいですね。

公開にあたって確認はしましたが、必要な設定の説明が抜けていたりするかもしれないので、もしうまく動かない方がいれば@konifarまで気軽に連絡をください。