Asana用BitBarプラグインをPythonで書きなおした
先日作った、Macのメニューバーに色々な情報を表示するBitBarに、プロジェクト管理サービスのAsanaのタスクを表示するためのプラグイン。
慣れているNode.jsベースで作ってみたものの、 他のBitBarプラグイン を見てみると、基本的に1スクリプトに収めている感じ。
Node版はnpmで事前のインストールが必要だったり、設定ファイルを切り出しているし、そもそもNode.jsはMac標準で入っていないしと、なんとなくBitBarの思想と合わない感じがしたので、OS標準で搭載されていて最近触ってみているPythonで書きなおしてみました。
作るにあたって、Pythonにも Asana公式のクライアントライブラリ があったのですが、依存関係は少ない方が良いだろうということで、これは使いませんでした。
できたもの
とりあえずGitHubにアップ。
もう少し使ってみて問題なさそうなら、本家に掲載をお願いしてみようかと画策中。
使い方
動作確認環境
項目 | バージョン | 備考 |
---|---|---|
Mac OS | 10.11.5 (El Capitan) | |
Python | 2.7.11 | Homebrew版 |
BitBar | 1.9.1 | - |
インストール
GitHubリポジトリ から bitbar-tasks.py をダウンロードして、BitBarプラグインフォルダへコピーします。
実行間隔を含めたファイル名に変更し、実行権限も付与します。
詳細は Installing plugins を参照。
設定
設定項目は、 import
がたくさん並んだ下のあたりにある以下の変数です。
Key | Value |
---|---|
PERSONAL_ACCESS_TOKEN |
Personal Access Token Asanaのサイトから取得します(後述) |
WORKSPACE_ID |
ワークスペースID はじめはブランクでOK |
DISPLAY_RANGE_MONTH |
(optional) 表示範囲 月単位で、◯ヶ月先までの締め切りが設定されているタスクを表示します。 未指定の場合は 2 としています |
LOCALE |
(optional) 日付フォーマットを決めるロケール指定ja_JP を指定すれば YYYY/MM/DD(曜日) 形式で表示します |
MENUBAR_IMAGE |
(optional) メニューバーに表示するアイコンイメージ Base64エンコードした画像データ |
前回設定していたAssignee ID(担当者ID)はPersona Access Tokenがわかれば取得できるので、今回は設定は不要としました。
Persona Access Tokenの取得
これについては 前回の記事 参照。
ワークスペースIDの取得
Node版は別コマンドを用意していましたが、単独のスクリプトなるとそうもいかないので、どうしようかと他のプラグインなどを見ていたところ、メニュー選択時に外部スクリプトを呼び出す機能を使って自分自身をを再度呼び出すことで追加の処理を行うような仕組みを使っていたので、それを利用してみることにしました。
というわけで、初回にスクリプトのワークスペースIDをブランクで実行すると、Persona Access Tokenに紐付いたワークスペース情報が表示されます。
表示したいワークスペースを選択すると、そのワークスペースIDがクリップボードにコピーされます。
コピーされたワークスペースIDを、上記のスクリプト内の WORKSPACE_ID
にセットしてください。
タスク一覧の表示
ワークスペースIDをセットして再実行すると、タスクが表示されると思います。
Node版と少しだけ変更したのは、ワークスペース名の横に表示タスクの担当者(Assignee)を出してみたのと、当日のタスクは緑色で表示するようにしたこと。自分がAsanaを複数アカウント使うようになったので、パッと見でどのアカウントのワークスペースだったかを知りたかったからというのがあります。
それ以外の表示内容については、Node版 と同じです。
複数のワークスペースを扱う
1スクリプトにしたおかげで、この点もシンプルになりました。
複数のワークスペース分のタスク表示が必要な場合は、別ファイル名でコピーして、表示したいワークスペースIDをセットすればOKです。
感想
Asana APIとはUTF-8でやりとりしますが、Pythonの文字列はUnicodeとなるということで、その文字列エンコーディングの扱いに少しハマりました。
結局、日本語が入る可能性がある担当者やワークスペース名前関連を扱うところで .encode("utf-8")
をしまくっているのですが、もう少しスマートな方法がありそう。
- 作者: Guido van Rossum,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る