TogglToGCalは,Toggl上にあるタイムエントリをGoogleカレンダーに イベントとして登録するRubyスクリプトです.
Ruby | 1.9.3 |
Rubyの他に,google-api-clientが必要です. 以下のコマンドを実行して,gemをインストールしてください.
$ gem install google-api-client
以下の3つをsetting.ymlに記述してください.
- 前回のタイムエントリ取得日(before_date)
- TogglのAPIトークン(toggl_api_token)
- GoogleカレンダーID(GoogleカレンダーのカレンダーID)
ここで,前回のタイムエントリ取得日はTogglを利用し始めた日付にしてください.
以下のリンク先の下部にAPIトークンが表示されています.
https://www.toggl.com/user/edit
本TogglToGCalは,GoogleAPIを利用しています. そのため,スクリプトの実行前にGoogleAPIを利用するための準備が必要です.
- GoogleAPIsConsole にアクセスし,Create Projectをクリックします.
- Googleの提供しているAPIが一覧で表示されますので,Calender APIのStatusをONに変更してください.
- GoogleAPIs,CalenderAPIのそれぞれについてAcceptをクリックしてください.
- 左メニューのAPI Accessをクリックし,Create OAuth 2.0 client ID… をクリックしてください.
- Project nameにTogglToGCalと入力してNextをクリックしてください.
- ラジオボタンにて,Installed application,Otherを選択し,Create client IDをクリックしてください.
- Client ID for installed applications以下にClient ID,Client secretが表示されます.
- GoogleAPIsConsole にアクセスし,左メニュー中のプルダウンメニューをクリックします.(名前は人によって違います)
- Createをクリックします.
- TogglToGCalと入力してCreate projectをクリックします.
- Googleの提供しているAPIが一覧で表示されますので,Calender APIのStatusをONに変更してください.
- GoogleAPIs,CalenderAPIのそれぞれについてAcceptをクリックしてください.
- 左メニューのAPI Accessをクリックし,Create OAuth 2.0 client ID… をクリックしてください.
- Project nameにTogglToGCalと入力してNextをクリックしてください.
- ラジオボタンにて,Installed application,Otherを選択し,Create client IDをクリックしてください.
- Client ID for installed applications以下にClient ID,Client secretが表示されます.
表示されたClient ID,Client secretを利用して,以下のコマンドを実行します.
$ google-api oauth-2-login --scope=https://www.googleapis.com/auth/calendar --client-id=CLIENT_ID --client-secret=CLIENT_SECRET
- ブラウザがポップアップし,認証を求められるので,認証をクリックしてください.
- ホームディレクトリに.google-api.yamlが生成されるので,このリポジトリをクローンしたディレクトリにコピーしてください.
以上で,GoogleAPIを利用する準備は完了です.
クローンしてきたディレクトリで,以下のコマンドを実行してください.
$ ruby TogglToGCal.rb
TogglToGCalを実行すると,time_entrys時刻1-時刻2.txtというファイルが生成されます. このファイルは時刻1から時刻2までのタイムエントリの詳細情報一覧となっています. また,同時にwget-logというファイルが生成されます. これらファイルをTogglToGCalは参照していないので,不要だと感じた場合は適宜削除していただいてかまいません.
前回のタイムエントリ取得日は,TogglToGCalによって自動で更新されます. setting.ymlのこの値を変更してしまうと,重複してGoogleカレンダーにイベントが登録される可能性がありますので,注意してください.
Togglでトラッキングを行っている最中にTogglToGCalを実行すると,トラッキングを 行っている最中のタイムエントリは現在時刻までのイベントとして登録されます. 次回TogglToGCal使用時には前回のタイムエントリ取得時に現在時刻までのイベントとして登録された タイムエントリの残った時間は,タイムエントリとして登録されません. トラッキング中は,出来る限りTogglToGCalを実行しないことをおすすめします.