ハイブリッドでいこうぜ

働くことはきっと楽しいこと。タスク管理を通じて、いいとこ取りを目指して試行錯誤するブログ

TogglのログをGoogleカレンダーに自動記録するスクリプトを書いた

こんなことに困っていました

私は長らくタスクログの記録にTogglというツールを使っています。

行動履歴をとることのできる便利なツールなのですが、ログをGoogleCalendarにお金をかけず、出力したい

と、思うようになりました。

方法は2つ

  1. Zapierというサービスを経由する
  2. CSVエクスポート/インポートを駆使する

これらで、お金をかけずGoogleCalendarにログを反映することはできます。

一番楽なのは、Zapier経由なのですが、こまめに記録を取っているような使い方をしているとあっという間にフリープランの制限を超えてしまいます。

制限に収まる使い方をしているなら、詳しく説明されているブログがありましたので、こちらを参照されると良いでしょう。

Togglの行動履歴をGoogleカレンダーに「無料で」取り込む唯一の方法 - Getting My Life Better

この他の方法だとCSV経由という方法があります。

Togglにログインをし、行動履歴をCSVにエクスポート、ちょっとCSVを加工してGoogleCalendarにインポートをすることでGoogleCalendarに反映することもできます。

詳しくはこちら。

TogglのデータをGoogleカレンダーに反映させて行動を可視化する | Rebuild KO

今まで、このCSV経由でなんとかやってきたのですが、はっきり行って手間です。

本当は、

自動的にGoogleCalendarに反映したい

これを見ているあなたも

そうでしょう?

そこで、作りました

一応、本職、Webエンジニアですので…

とはいえ、Webサービス化するのは時間を要してしまうので簡易的なものです。

GoogleAppsScript経由という手段であれば、比較的楽に結構やりたいことができるはずだと思い立ち、作り、公開をしてみることにしました。

ソースコードはこちらです。

mkawaguchi/toggl_exporter

使い方

GoogleAppsScriptを作成する

大半の人は有効になっていないと思いますので、まず有効にしましょう。

f:id:m-kawaguchi:20171113082128p:plain:w480

新規ボタン→アプリを追加 (私の場合は、すでに使っていたのでメニューに出ています)

f:id:m-kawaguchi:20171113070218p:plain:w480

Google Apps Scriptを検索して追加します。

初期画面

f:id:m-kawaguchi:20171113070208p:plain:w480

必要なライブラリを追加する

moment.jsというライブラリを使っている関係で、一手間必要です。

プロジェクトキー: MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
f:id:m-kawaguchi:20171113081933p:plain:w480

リソース→ライブラリ...を選択

f:id:m-kawaguchi:20171113070250p:plain:w480

ライブラリを追加のフォームに上記プロジェクトキーを追加します

ソースコードを取得する

mkawaguchi/toggl_exporter

こちらよりソースコードを表示、コピペする

f:id:m-kawaguchi:20171112201032p:plain:w480

TogglのAPI tokenを取得する

Togglにログイン 「自分のアバターをクリック」→「Profile Settings」→「API token」

var TOGGL_BASIC_AUTH = 'REPLACE_ME:api_token';

REPLACE_MEのところを先ほど取得した「API token」(英数字の羅列)に置換します。

GoogleCalendarのカレンダーIDを取得

「記録を反映したいカレンダーの詳細を表示」→「カレンダーのアドレスの項目にあるカレンダーIDを取得」

var GOOGLE_CALENDAR_ID = 'REPLACE_ME';

同様にREPLACE_MEをxxxxx@group.calendar.google.comに置換します。

以上ができたら、保存をして反映。

最後に自動起動する設定をする

プロジェクトを保存 好きな名前をつけてください。

色々警告が出ますが…AppScriptの仕様によるものなので、許可をしてください。

怪しいことはしてないですが、不安な人はソースコードを読んでいただければ。

f:id:m-kawaguchi:20171113081414p:plain:w480

3つほど許可が必要な理由

  • GoogleDriveへのアクセス 最後にログを記録した日時を保存するのに使います。 こうすることで、ログの多重記録を防ぎます。

  • 外部へのアクセス TogglのサービスのAPI経由でデータを取得するのに必要です。

  • Googleカレンダーへのアクセス これは、取得したログをカレンダーに反映するのに必要です。

「編集」→「現在のプロジェクトのトリガー」→「実行」を「watch」に指定。「時間主導型、分タイマー、15分ごと」で良いでしょう。 実行する間隔はもっと、長くても(1時間くらい?)良いかもしれません。

お疲れ様でした以上で設定完了です。 いつも通りTogglを使っていると、ログがカレンダーに反映されていることでしょう。

最後に

重要なことを一つだけ。

スクリプトは、MIT Licenseとします。 何らかの問題が生じたとしても、作者である私は何の責任も負えないことをご了承ください。

ご要望やご意見、その他わかりにくいことなどあれば、お答えします。 twitterなどで教えてくださいますと、モチベーションにもつながります😃