本記事では、GoogleカレンダーとSlackbot(Pythonで作成)を連動してタスクスケジュールを行う方法を紹介します。
GoogleカレンダーのSlack連携機能とSlackbotを組み合わせればGoogleカレンダーからタスクスケジューリングすることも可能です。
目次
Slackbotの予定からGoogleカレンダーのイベントを起こす準備
イベントを起こすための準備は以下の通りです。
・SlackとGoogleカレンダーを連携する
・Slackbotを作成(Python)
SlackとGoogleカレンダーを連携する方法は「SlackとGoogleカレンダーを連携させよう」をお読みください。
PythonでSlackbotを作成する方法は「SlackbotをPythonで作成しよう」をお読みだくさい。
GoogleカレンダーからSlackに送られてくるメッセージについて
GoogleカレンダーとSlackを連携すると以下のような形でスケジュールがSlackに投稿されるようになります。
このメッセージをPythonのprint文で見ると以下のメッセージのようなデータが格納されていることがわかります。
^CTraceback (most recent call last):
File "bot.py", line 20, in
※メールアドレスやなどの情報は適当な値に書き換えています。
ごちゃちゃしていますが、重要なのは「title」にスケジュールのタイトルである「【イベント】テスト」が入っている点と「'subtype'」が「'bot_message'」となっている点です。
「title」にイベントが入ってくることがわかったのでイベントを起こしたい時間に「【イベント】」などわかりやすい単語を入れておけば他のスケジュールと区別をつけることができます。
「'subtype'」が「'bot_message'」となっているのでこの指定をしておけば人間の会話が紛れ込むことはなさそうです。
「'subtype'」は他のアプリケーションでも使用していると思いますが、Googleカレンダーの予定が送られてくるチャンネルを専用にすればノイズは少なくなります。
SlackbotのGoogleカレンダー処理の実装例
以下は calenderが来た場合の処理です。
◆イベントを起こすための論理作成(gcalender.py)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from slackbot.bot import listen_to import re @listen_to('^(.*)$') def gcalendar_event(message, text): print(vars(message)) # サブタイプがBotメッセージかチェック if 'subtype' in message._body: if message._body['subtype'] == 'bot_message': # カレンダーのタイトルを取得 event = message._body['attachments'][0]['title'] # タイトルがイベントから始まる if re.compile(r'^【イベント】(.*)$').match(event): message.send('予定の時間が来たよー') |
イベントはテキストを持たないので全てのコメントに対して反応するようにしておきます。
このコードを実行するとタイトルが「【イベント】」から始まるタスクが来た時にコメントを返します。
実行するユーザーを限定したい場合は「username」の判定を追加しましょう。
◆slackbot_settings.pyの修正
slackbot_settings.pyにモジュールを追加します。
1 2 3 4 5 | PLUGINS = [ 'slackbot.plugins', 'botmodules', 'gcalender', ] |
これを応用すれば、Googleカレンダーにイベントを記述することでサーバーにあるスクリプトを動作させることも可能となります。
今回はSlackbotを介しましたが、SlackのAPIが使えばカレンダーからのメッセージに対して直接イベントを起こすことも可能です。
終わりに
Googleカレンダーから配信されてくる投稿を解析して応答するプログラムを作成しておくことで、特定の時刻にSlackbotにメッセージ投稿させることができます。
今回はメッセージ投稿の方法の紹介でしたが、応用すればサーバーにあるスクリプトを動作させることも可能です。
カレンダーに設定するだけなので作業の効率化にも繋がりますし、プログラミングに詳しくない人でも操作できます。
データの解析はそれほど難しくないのでデータの内容をチェックしつつ、いろいろ試してみましょう。
Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜
◆関連記事
SlackbotをPythonで作成しよう
Botが起動した時に挨拶をさせる
Slackbotで指定した時間に投稿する