LoginSignup
0
1

More than 3 years have passed since last update.

Chatworkで、Slackのリマインドに相当するものをGASで作った

Last updated at Posted at 2020-07-29

概要

Slackでは、/remind hoge fuga piyo でさくっと作れるリマインダ機能。
Chatworkには、それに類するものは現時点ではありません。
なので作ってみました。

コンセプト

エンジニアなら自前でbot作ればいいです。
非エンジニアでも設定できるようにしたいです。
というわけで、スプレッドシート上に設定を書けば動くようなものにしました。

実装環境

そんなわけで、スプレッドシート+GASです。

設定シート

こんな感じにしてみました
image.png

  • 実行形式は大きく分けて2つです。
    • 日時を指定して1回だけ実行
    • 曜日と時間を指定して繰り返し実行
  • 発言者は、内部的に設定してあるAPIトークンに変換されます。
  • チャットルームIDでなくチャットルーム名にして内部変換することも考えましたが、チャットルームIDにしました。
    • ルーム名から変換だと、新しい部屋が増えるたびにエンジニアが設定しないといけない(発言者はそこまで頻繁には増えないでしょう多分)
      • もしかしたら管理者のトークンだとgetRoomsで全部屋を取得できるのかもしれないけど、管理者じゃないし(´・ω・`)
    • URLからチャットルームIDを抜き出すことは、誰でもできるとまでは言わないけど、資料示せばなんとかなるでしょ
  • いけてないとは思うのですが、重複送信を避けるための送信済みフラグを、シート内に持っています。

スクリプト仕様

概ねこんな感じで動きます。

  • GASのトリガ機能により、毎分起動する
    • 設定シートを読み込んで、発言すべきものがあったら発言する
      • 発言タイミングはとりあえず、「設定日時が過去5分以内」とした
        • 「毎分動作で過去1分以内」だけだと、取りこぼしや重複が起きそうな気がした
          • 5分以内として取りこぼしを防いだ
          • 送信済みフラグで重複送信を防いだ
  • GASのトリガ機能により、毎日1回0時に起動する
    • 送信済みフラグをクリアする

ソースコード

感想というか

GASデビュー作です。へんなとこがあったらご指摘頂けるとありがたいです。

謝辞

なんかごく当たり前のようにgetRoomsとか書いてましたが、Chatworkのライブラリはこちら使わせて頂きました。ありがとうございます。
https://github.com/cw-shibuya/chatwork-client-gas

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