以前GeekToolの自分設定を紹介した記事 タスクリストはicalBuddy を使ってiCalの情報を載せる様にしている、と書きましたが、 実際に現在iCal自体を使わなくなっているのでこの欄は空欄のままでした。
一方でGoogle Tasks (ToDoリスト)で、 GDTと言える程ではないものの、適当に思いついたことをメモしておくのにも使っています。
それをそのままiCal情報を載せてた場所に載せれば良いとは思っててしばらく 放っておいてしまいましたが、 今回Google Tasksをこの欄へ載せる様にスクリプトを書いてアップデートしました。
GoogleのAPI関連と一緒にまとめておきます。
googleclで挑戦(上手くいかない)
googleclと言う Google APIを使ったツールを見つけたので導入してみました。
Ref:
DiscoveryManual
によるとTasks等が入ったDiscovery Service用のAPIが あり、これらをインストールして、最新のgoogleclを使えば Tasksも使える、とのこと。
ただ、これ、2011年くらいの話なので、このTasks等のAPIは
$ sudo easy_install --upgrade google-api-python-client
と前回インストールした時点で 入っていると思います。 Google APIs Client Libary for Pythonのページへ言ってもこれしかないので。
googleclの方も、上のDiscoveryManualのページだと、svnにあるアルファ版の 最新のを、と書いてありますが、svnのtrunkを見ると、0.9.14で tagsにある最新のものとおそらく一緒のものです。
通常googleclをインストールする場合には
$ sudo easy_install googlecl
だけでOKですが、今回は一応svnのtrunkから取ってきてインストールしてみました。
$ svn checkout http://googlecl.googlecode.com/svn/trunk/ googlecl-read-only
$ cd googlecl-read-only
$ sudo python setup.py install
これでgoogle
コマンドが使える様になります。
しかし、calendar
等のコマンドは使えましたがtasksをやろうとすると
$ google tasks
...
FATAL ERROR:
Discovery API unavailable. Services limited to:help, picasa, blogger, youtube, docs, contacts, calendar, finance
Unknown service: tasks
となり、Discovery APIが入っていないと怒られます。
この辺、しっかりと追ってないですが、 すでにgoogle-api-python-clientに統一されていて、 googleclの中で判定する際に古い構造を探しに行って失敗しているのか、 とかなのかな、と思ってます(違ったら教えて下さい)。
googlecl自体が古いままで止まっているので、 あまりやっても意味ないかな、ということで取り敢えず断念。
自分でスクリプトを書いてみる
Google APIs Client Libary for Pythonのページ内の
Getting started: Quickstart
と言う項目で
Select an API
からTasks APISelect a Platform
からCommand-Line
を選ぶと、Configure Project
というボタンが出てくるのでこれを押して
さらに出てきた窓でContinue
を押すと
下の様な画面にきます。
ここからサンプルコード(Download the starter application
)を取って来ることができますので、特に中にあるsample.py
を参考にしてスクリプトを書いていくことができます。
(client_secretコードも必要ならとっておく。)
取り敢えずリストを取ってこれれば良いだけなので、簡単に次の様なスクリプトを作ってみました。
- gtaskslist.py
- そのまま走らせれば全てのリストを取ってくる
- -l (–list)でリストを指定する(指定しない場合は全てを使用)
- -i (–item)で指定した言葉を含むタスクだけ取ってくる(指定しない場合は全てを取ってくる)
,
で区切って複数指定出来る
- オプション指定しない引数は-iと同様にタスクの選択に使う
- 例) ./gtaskslist.py -l mylist -i work,home important
mylist
と言うリストの中からwork
,home
またはimportant
と言う単語の入ったタスクのみ表示する
こんな感じです。 メモや期限は取り敢えず無視しています。
試しに以下の様なタスクリスト(test)をGoogle Tasksに作って表示してみます。
ちなみに、Google TasksへはCalendarからも操作できますが https://mail.google.com/tasks/canvas というアドレスへアクセスするとフル画面で操作することが出来ます。
gtaskslist.py
は適当なところへおいて、~/usr/bin/gtaskslist
へ
リンクを張ってあります。(~usr/bin
はPATH
が通っている所。この辺は好きな様に。)
cd ~/usr/bin/
ln -s ~/Dropbox/08_Settings/Git/python/gtaskslist.py
この状態でshell GeekletのCommand欄へ
~/usr/bin/gtaskslist -l test -i IMPORTANT
と入力しておきます。
結果は下の様になります。
上のスクリプトではタスクを言葉でピックアップしてそのまま並べているだけですが、 期限等も含めて表示したい場合は Google Tasks API を参考に項目を追加したりしてみれば意外と簡単に出来ると思います。