Pythonサンプルコード集

Googleカレンダーの予定からSlackbotにイベントを起こさせる方法

本記事では、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に投稿されるようになります。

Googleカレンダーからの通知

このメッセージをPythonのprint文で見ると以下のメッセージのようなデータが格納されていることがわかります。

{'_client': , '_body': {'text': '', 'attachments': [{'fallback': '【イベント】テスト: to ', 'text': ' to ', 'pretext': 'Event starting in 15 minutes:', 'title': '【イベント】テスト' 'id': 1, 'title_link': 'https://www.google.com/calendar/event?eid=abcdefgh', 'color': '9fe1e7', 'mrkdwn_in': ['text', 'pretext']}], 'mrkdwn': True, 'username': 'xxxxxxxx@gmail.com', 'bot_id': 'XXXXXXXXX', 'type': 'message', 'subtype': 'bot_message', 'channel': 'XXXXXXX', 'team': 'XXXXXXX', 'event_ts': '1547386201.001300', 'ts': '1547386201.001300'}, '_plugins': }
^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)

イベントはテキストを持たないので全てのコメントに対して反応するようにしておきます。
このコードを実行するとタイトルが「【イベント】」から始まるタスクが来た時にコメントを返します。

実行するユーザーを限定したい場合は「username」の判定を追加しましょう。

if message._body['username'] == 'xxxxxxxx@gmail.com':

◆slackbot_settings.pyの修正
slackbot_settings.pyにモジュールを追加します。

◆実行結果
Googleカレンダーでイベントを起こす

これを応用すれば、Googleカレンダーにイベントを記述することでサーバーにあるスクリプトを動作させることも可能となります。

今回はSlackbotを介しましたが、SlackのAPIが使えばカレンダーからのメッセージに対して直接イベントを起こすことも可能です。

終わりに

Googleカレンダーから配信されてくる投稿を解析して応答するプログラムを作成しておくことで、特定の時刻にSlackbotにメッセージ投稿させることができます。

今回はメッセージ投稿の方法の紹介でしたが、応用すればサーバーにあるスクリプトを動作させることも可能です。

カレンダーに設定するだけなので作業の効率化にも繋がりますし、プログラミングに詳しくない人でも操作できます。

データの解析はそれほど難しくないのでデータの内容をチェックしつつ、いろいろ試してみましょう。

Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜

◆関連記事
SlackbotをPythonで作成しよう
Botが起動した時に挨拶をさせる
Slackbotで指定した時間に投稿する

こちらの記事も読まれています

  • この記事を書いた人
miyabikno

みやびの

住んでいるところ:神奈川県。 プログラミング歴は13年ほど。 ※プログラミングに関する無料相談・質問への回答は行っていません。

-Pythonサンプルコード集
-

Copyright© みやびのどっとぴーわい , 2020 All Rights Reserved Powered by AFFINGER5.