はじめに
前回の続きです。
今回はより実践的、具体的な使い方を紹介します。
ドキュメントはこちらです。
タスク管理の補助に使ってみる
Chatworkにはタスク機能がついているのですが、タスク管理をしようとすると、なかなかに大変です。
タスク管理はタスク管理専用のアプリケーションを使うべきであることは承知の上ですが…。
会社の縛りでうまく行かないこともあるのが、残念なところです ;(
さて。
個人的には、他人のタスクが見えづらいのが困ります。
もちろん見ること自体はできますが、人数やタスクが増えると「□自分のタスクのみ表示」にチェックを入れてる人が多いのではないでしょうか。
そこで、
- 特定の人間と自分のタスクをみたい。
- かつ、本日が期限のタスクだけでいい。
- 複数のグループチャットから探したい。
という要望に対応してみます。
コードはこんな感じ
<?php $targetAccounts = array(MEMBER_IDS); $targetRoomIds = array(ROOM_IDS); $message = ''; // 部屋とアカウントでループして、タスクを探します。 foreach ($targetRoomIds as $targetRoomId) { foreach ($targetAccounts as $accountId) { // タスク検索APIを使います。部屋とアカウントを指定します。 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/".$targetRoomId."/tasks?account_id=".$accountId."&status=open"); curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-ChatWorkToken: TOKEN_CODE")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $return = curl_exec($ch); curl_close($ch); $taskList = json_decode($return, true); // 「今日」の日時の開始と終了を割り出す $now = time(); $year = date('Y', $now); $month = date('m', $now); $day = date('d', $now); $todayStart = mktime(0,0,0,$month,$day,$year); $todayEnd = mktime(23,59,59,$month,$day,$year); // 取得したタスクをループ if (!empty($taskList)) { foreach ($taskList as $eachTask) { // 実行した日のタスクだけ出力 if ($todayStart < $eachTask['limit_time'] && $todayEnd > $eachTask['limit_time']) { // 出力の方法は、工夫してみてください $message .= 'https://www.chatwork.com/#!rid'.$targetRoomId.'-'.$eachTask['message_id'].PHP_EOL; $message .= '■担当者: '.$eachTask['account']['name'].PHP_EOL; $message .= '[info]'.$eachTask['body'].'[/info]'.PHP_EOL; } } } } } $message = '[info][title]■■■本日のタスク■■■[/title]'.$message .'[/info]';
MEMBER_IDS
、ROOM_IDS
、TOKEN_CODE
にご自分の環境に合うものをセットしてください。- 最終的に、
$message
を前回の記事のように投稿してあげれば完成です。 - これをcronに設定して毎朝動くするようにすると便利です。
Chatworkは装飾に[info][/info]
とか[info][title][/title][/info]
が使えるので、活用すると見やすくなります。
終わりに
上記コードだと、タスクがない場合に微妙な表示になったりします。
それぞれのニーズや使い方によって、調整をして使ってください。
以上でした!