TodoistとTodoistAPIで、毎朝のタスク報告をするヾ(‘ω’)ノ
この記事はVOYAGE GROUP エンジニアブログ : Advent Calendar 2014の11日目の記事になります。
こんにちは、@sinamon129です。
VOYAGE GROUPで、新卒一年目のエンジニアをしておりますヽ|・ω・|ゞ
突然ですが、みなさんはタスク管理ツールってつかっていますか?
学生時代はTODOが多い時だけメモに書き出してみたりしていたものですが、
会社に入ると、今日や今週に自分が自分がやる仕事を把握したり、報告する場面が増えました。また、仕事だけじゃなくて、プライベートのタスクもあったりして、時間を有効活用するために、やるべきことをきちんと把握したいようになりました。
そこで、Todoistを使い始めたので、どこが使いやすいかと、普段の報告を簡単にするプログラムを書いた話をしようと思います〜
Todoistとは?
いい感じのタスク管理ツールです。詳しくは、
To-Doリストとタスク管理。無料、簡単、オンラインとモバイル用: Todoist
日記3日坊主的正確の私なので、あまり管理系のツールを使い続けられたことがないのですが、一週間ぐらい続いています…w
個人的にいいなと思ってるポイントを3つ。
今日&一週間のやることが見やすい
全体的に無駄がなくて、テンションのあがるUIだとおもいますw
今日と次の7日間がフォルダ分けされているので、
今日やることをみながらTODOをこなすし、明日のものを前倒しにしてやっといたほうが平和そうとか、そういう調整を一週間の予定を見ながらできます。
また、期限が切れたタスクも今日のフォルダに入ったままになっていて、やばいやばい感を持ちながら消化することもできます…w
やたら褒められる
当日のタスクを全て終了すると、お疲れ様でした的な文章がでたり、あなたの生産性という項目があって、タスクをこなすとカルマが加算されていったり、日や週煮立てた目標を達成すると、ボーナスポイントがもらえたりするので、楽しいですw
一人で使うのに適している
プロジェクトを共有して複数人でつかうこともできるのですが、一人で使う時に気軽に使えるのがすごくよいです。
日々のタスクを自動で報告してみる
会社で、毎朝Slackの所属チームのチャンネルに、昨日やったことと今日やることを投下して、メンバーに共有をしています。
せっかくTodoistをつかっているので、昨日終わらせたものと今日やることにはいってるものをそのままslackに投げたいなーとおもいました。
でもいちいち探してコピーするのは面倒だし…
ということで、Todoist APIとSlack APIをつかって、
Todoistで管理している仕事の昨日やったこと・今日やることをSlackに投げることにしました。
今回は、http://todoist.com/API/Todoist Standard APIの、
を使って、昨日やったことと今日やることを取得することに。
どちらも、この日のという指定をして取ることができなかったので、
全部とってきて、プログラム側で処理をしています。
(コード適当でごめんなさい)
#todoist.rb require 'open-uri' require 'json' class Todoist API_URL = 'https://todoist.com/API/' TOKEN = 'とーくん。設定から取ってこれる' def getAllCompletedItems(project_id) request_url = create_url('getAllCompletedItems', {:token => TOKEN, :project_id => project_id}) api_request(request_url) end def getUncompletedItems(project_id) request_url = create_url('getUncompletedItems', {:token => TOKEN, :project_id => project_id}) api_request(request_url) end def api_request(request_url) res = open(request_url) code, message = res.status if code == '200' return JSON.parse(res.read) end end def create_url(action, params) API_URL + action + '?' + URI.encode_www_form(params) end end
#slack.rb require 'uri' require 'net/http' class Slack TOKEN = 'slackのとーくん'; def post_message(text) `curl -F "token=#{TOKEN}" -F "channel=#{'チャンネル名'}" -F "username=#{'投稿名'}" -F "text=#{text}" -F "icon_emoji=>#{'アイコン代わりの絵文字'}" https://slack.com/api/chat.postMessage` end end
# daily_standup.rb require 'date' require './todoist.rb' require './slack.rb' project_id = 'とってきたいプロジェクトのID' todoist = Todoist.new all_complete_items = todoist.getAllCompletedItems(project_id) uncomplete_items = todoist.getUncompletedItems(project_id) yesterday_complete_tasks = '' all_complete_items['items'].each do |task| if Date.today - 1 === Date.parse(task['completed_date']) then yesterday_complete_tasks << "・#{task["content"]} \n" end end today_tasks = '' uncomplete_items.each do |task| unless task['due_date'].nil? then if Date.today === Date.parse(task['due_date']) then today_tasks << "・#{task["content"]} \n" end end end daily_standup = <<"EOS" :panerun: しなもん :panerun: # 昨日やったこと #{yesterday_complete_tasks} # 今日やること #{today_tasks} EOS print daily_standup slack = Slack.new slack.post_message(daily_standup);
あとで綺麗にして、githubにあげます(TODO)
そうすると、
こういう感じで投稿できるようになります!
あとは、cronで毎日9時半(定時)にセットすれば手を離してても報告できますね!(´・艸・`)
明日は、同期で音ゲーをこよなく愛する@gomachan46です!