見出し画像

TogglのデータをGoogleカレンダーに記録する方法

時間測定、してますか?

私は、時間測定ツールとしてTogglを使っています。
Tooglに記入した内容がGoogleカレンダーに自動で転記されれば、
後で振り返ったときに、この日は何をやっていたのか一目瞭然なので、
便利っぽいですね。

ということでTooglとGoogleカレンダーを連携しようと思い立ちました。
早速ググってみたら、いくつか連携の方法が見つかりました。

1. Zapier
2. TogglのGoogleカレンダー連携ツール
3. Integromat
4. Google Apps Script

結論から言うと、4. を選択しました。
以下にその理由を書いていきますが、
急いでる人は4. まで飛んでいってください。

1. Zapier

やりたいことはできそうなのですが、
無料アカウントでは月に100タスクしか実行できません。

つまり、
Togglに一日3タスク以上登録する場合、
無料プランではオーバーしてしまう可能性が高い
です。
私は間違いなく超えてしまうので、×です。

2. TogglのGoogleカレンダー連携ツール

Togglのサイトを見てみたら、Googleカレンダーとの
連携のツールを出しています。

なんだ、これでいいじゃん、と見てみたら、
「Googleカレンダーのイベント画面に、
Togglのちっこいアイコンが表示されるので、
そこからTogglが起動できる」

というものでした。

画像1

違う、そうじゃない。

私がやりたいのは、
Togglの記録をGoogleカレンダーに送ること
なのであって、方向が逆なので×です。

3. Integromat

これもZapierと同じようなサービス間連携ツールです。

しかし、これまた無料プランは100タスクしか実行できないので、
Zapierと同じ理由で×です。

4. Google Apps Scriptを使う

以下で、m-kawaguchiさんが、自作のGoogle Apps Scriptで
Togglの記録をGoogleカレンダーに保存する方法を
公開してくださっている。

これはバッチリ私のやりたいことができそう。
ということで、ありがたく使わせてもらうことにした。

基本的に、サイトの記載に従っていけばいいのだが、
いくつかつまづいたところがあったので、メモしておく。

4-1. Toggl API Tokenの表示

まず詰まったのが、TogglのAPI Tokenを表示させるところ。
まずTogglのサイトにブラウザでログインします。

画面左下のアカウント名をクリックすると
ポップアップが出てくるので、
「Profile settings」をクリックします。

画像2

表示された画面を下にスクロールすると、API Tokenが出てきます。

画像3

4-2. カレンダーID

サイトではカレンダーIDが

xxxxx@group.calendar.google.com

とされていましたが、Googleカレンダーのページで見てみたら、
アカウント名(私の場合は xxxxx@gmail.com )でよかったです。

4-3. 自動起動の設定

どこで何をすればいいのか迷ったのですが、
コードの編集画面で、
「編集」→「現在のプロジェクトのトリガー」を選択します。
私はなぜか英語環境ですが、言語設定が日本語なら、
日本語になっているはずです。

画像10

すると以下のような画面が出てきます。
設定内容は、以下の通りで良いかと思います。

「実行」を「watch」に指定。「時間主導型、分タイマー、15分ごと」

画像7

で、Saveを押したら、以下のように怒られました。
ここで「Advanced」を押します。日本語は「詳細設定」かな?

画像5

すると「Go to "プロジェクト名"」的なところがあるのでクリックします。

画像6

すると、やっとアクセス許可の画面にたどり着けるので、許可します。

画像7

しばらく待ったら、ちゃんとTogglで記入したタスクが
Googleカレンダーに流れ込んできた!すごい!

画像8

Google Apps Scriptの「My Projects」から
作ったプロジェクトを見てみると、
ちゃんと実行されているのが確認できた。すごい!

画像9

ということで、Google Apps Scriptを使って
Togglの記録を、自動でGoogleカレンダーに
流し込むことができるようになった。

作者のm-kawaguchiさん、ありがとうございます!

追記:自動更新が止まってしまうときの対応

2回ほど、自動更新が止まってしまっていることがありました。
m-kawaguchiさんの記事を見に行ったところ、
以下の記載がありました。

2018/4/6 追記:
検索エンジン等で、この記事を見て使ってくださっている方がいらっしゃいます。 導入をしてみたもののうまく動かないというフィードバックを時々いただきます。
動かない場合はまず、 Googleドライブに toggl_exporter_cache という前回実行した日時を記録するキャッシュファイルを作成していますが、 こちらの作成ができていることをご確認ください。
もし、作成できているようでしたら、一旦削除していただき、再実行を試みてください。 キャッシュを削除・再実行することで期待した動作をするケースが何例かありました。

とのことでしたので、やってみました。
Gドライブを開くと、確かにありました!"toggl_exporter_cache"が!

スクリーンショット 2020-12-16 9.03.19

こいつを右クリックから削除して、あとは待つだけ。
勝手に同期が再開されました。めでたしめでたし。
(追記ここまで)

追記2:Toggl APIのURL変更に対応

Togglから
「APIのURLを https://www.toggl.com からhttps://api.track.toggl.com に変更するよー」

という連絡が来た。
API Documentation Is Changing Soon - Toggl Blog

旧URLは2021/6/30以降使えなくなるそうなので、
「function getTimeEntries(unix_timestamp)」の中にあるAPIのURLを、
以下のように新しいAPIのURLに変更。

修正前

var uri = 'https://www.toggl.com/api/v8/time_entries' + '?' + 'start_date=' + encodeURIComponent(Moment.moment(unix_timestamp, 'X').format());

修正後

 var uri = 'https://api.track.toggl.com/api/v8/time_entries' + '?' + 'start_date=' + encodeURIComponent(Moment.moment(unix_timestamp, 'X').format());

フロッピーディスクマーク💾を押してセーブする(なんで今どきフロッピー?)

しばらく様子を見てみたところ、無事Togglのデータは取り込まれている模様。(追記2ここまで)

読んでいただいて、ありがとうございます! もしサポートしていただけると、とても喜びます。 ありがたく、パソコン関係グッズ購入費、 作業時のカフェオレ購入費、などに使わせていただきます。