rcmdnk's blog

20130510_tasks_canvas_200_200

以前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 API
  • Select a PlatformからCommand-Line

を選ぶと、Configure Projectというボタンが出てくるのでこれを押して さらに出てきた窓でContinueを押すと 下の様な画面にきます。

googleapi

ここからサンプルコード(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に作って表示してみます。

tasks_canvas

ちなみに、Google TasksへはCalendarからも操作できますが https://mail.google.com/tasks/canvas というアドレスへアクセスするとフル画面で操作することが出来ます。

gtaskslist.pyは適当なところへおいて、~/usr/bin/gtaskslistへ リンクを張ってあります。(~usr/binPATHが通っている所。この辺は好きな様に。)

cd ~/usr/bin/
ln -s ~/Dropbox/08_Settings/Git/python/gtaskslist.py

この状態でshell GeekletのCommand欄へ

~/usr/bin/gtaskslist -l test -i IMPORTANT

と入力しておきます。

結果は下の様になります。

geektool_gtaskslist

上のスクリプトではタスクを言葉でピックアップしてそのまま並べているだけですが、 期限等も含めて表示したい場合は Google Tasks API を参考に項目を追加したりしてみれば意外と簡単に出来ると思います。

Sponsored Links
Sponsored Links

« OctopressのGist表示の調整 GNU screenアップデート »

}