RからWunderlist APIを使うパッケージwunderlistrをつくりました
Rに管理されたい勢のみなさまこんにちは。
WunderlistというToDo管理ツールがあって前からちょっと気になってたところ、↓の記事を見かけました。
ということで(?)、RからAPIを使うパッケージをつくりました。これでもうRに管理され放題ですねっ!
インストール
Githubからインストールできます。
devtools::install_github("yutannihilation/wunderlistr")
使い方
基本的なノリ
それぞれのAPIの詳細は公式ドキュメントを見てください。
Documentation | Wunderlist Developer
一部の例外を除いて、wunderlistrの関数は以下のような命名規則になっています。
wndr_get_XXX
: XXXの情報を取得する(例:wndr_get_task()
はタスクの情報を取得する)wndr_create_XXX
: XXXを作成する(例:wndr_create_task()
はタスクを新規に作成する)wndr_update_XXX
: XXXの情報を更新する(例:wndr_update_task()
はタスクの情報を更新する)wndr_delete_XXX
: XXXを削除する(例:wndr_delete_task()
はタスクを削除する)
認証
まず、WunderlistからOAuthのアクセストークンを取得します。wndr_access_token()
はhttr::oauth2.0_token()
を内部で使っていて、トークンをローカルファイルとして保存するか聞かれます。なお、ファイルとして保存しなくても、環境変数にキャッシュするようにしているので少なくとも同じセッション中であればキャッシュが効きます。
library(wunderlistr) wndr_access_token() #> Use a local file to cache OAuth access credentials between R sessions? #> 1: Yes #> 2: No #> #> Selection:
これに答えると、ブラウザが立ち上がり、というアイコンのアプリ連携の認証を求められます(注:ここの動作を確かめようと思ってアプリ連携の取り消しを探したんですが、どうやらないらしく、一度認証しちゃうと取り消す操作ができないみたいです。覚悟が必要です...信じてくださいとしか言いようがないですが...)
これが終わると、アクセストークンが表示されます。上述のようにキャッシュされるので覚える必要はありません。
#> [1] "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
リストを取得
さて、さっそくタスク一覧を取得したいですが、タスクを取得するには、
- タスクのID
- リストのID
のいずれかを指定する必要があります。タスクのIDをあらかじめ知ってたりしないかぎり、まずはリストのIDを取得します。wndr_get_list()
を使います。
l <- wndr_get_list() l #> id title owner_type owner_id list_type public revision created_at type #> 1 123456789 inbox user 111111111 inbox FALSE 8 2016-03-26T19:53:32.997Z list #> 2 123456788 映画とか舞台を観る user 111111111 list FALSE 17 2016-03-26T19:54:44.425Z list #> 3 123456787 遠い人と会う user 111111111 list FALSE 23 2016-03-26T19:54:44.465Z list #> 4 123456786 本を読む user 111111111 list FALSE 2 2016-03-26T19:54:44.458Z list ...
ここでrevision
というカラムがありますが、更新や削除をするにはこのrevision
を必ず指定しなくてはいけません。これが一致していないとエラーになります。
タスクを取得
先ほど取得したリストIDを指定して、そのリストに含まれるタスクを取得します。wndr_get_task()
を使います。
t <- wndr_get_task(list_id = l$id[2]) t #> id created_at created_by_id #> 1 2345678912 2016-03-26T20:02:44.224Z 11111111 #> 2 2345678913 2016-03-26T20:06:46.389Z 11111111 #> created_by_request_id due_date completed #> 1 xxxxxxxxxx 2016-05-14 FALSE #> 2 <NA> <NA> FALSE #> starred list_id revision title type #> 1 FALSE 123456788 7 殿、利息でござる task #> 2 FALSE 123456788 4 Vamp Bamboo Burn~ヴァン・バン・バーン~ task
タスクを追加
そういえば、都内随一のエンターテイメント・Tokyo.Rが4月30日にあると風の噂で聞いたので、タスクに登録しておきましょう。
new_task <- wndr_create_task(list_id = l$id[2], title = "Toyko.R", due_date = as.POSIXct("2016-04-30 12:00")) new_task #> $id #> [1] 2345678914 #> #> $created_at #> [1] "2016-03-28T00:15:58.716Z" #> #> $created_by_id #> [1] 11111111 #> #> $due_date #> [1] "2016-04-30" #> #> $completed #> [1] FALSE #> #> $starred #> [1] FALSE #> #> $list_id #> [1] 123456788 #> #> $revision #> [1] 1 #> #> $title #> [1] "Toyko.R" #> #> $type #> [1] "task"
タスクを更新
あれ、よく見ると誤字がありますね。なんだToyko.Rって??
ということで、修正します。情報を更新するにはwndr_update_task()
を使います。
wndr_update_task(id = new_task$id, revision = new_task$revision, title = "Tokyo.R") #> ... #> $revision #> [1] 2 #> #> $title #> [1] "Tokyo.R" #> ...
ちゃんと修正されてますね。
リマインダを設定
例によってまだATNDは立っていないので参加登録できません。忘れないようにリマインダを設定しておきます。wndr_create_reminder()
を使います。
wndr_create_reminder(task_id = new_task$id, date = as.POSIXct("2016-04-01 10:00")) #> $id #> [1] 2468024 #> #> $date #> [1] "2016-04-01T01:00:00.000Z" #> ...
ファイルをアップロード
そういえばLTで使おうと思っていたネタ画像があったんだった。そんなときはファイルをアップロードしておきましょう。wndr_create_file()
を使います。
wndr_create_file(task_id = new_task$id, filepath = "データサイエンティストさとようへいさん.png") #> Part1: Geting upload info... #> Part2: Upload to Amazon S3... #> Part3: Marking the upload as finished... #> file is successfully uploaded as ID 55555555 #> ...
ブラウザから確認すると、ちゃんとアップロードされていることがわかります。
懺悔と感想
とまあ、こんなノリで使えます。一点謝っておかなくてはならないのは、ドキュメント書くのめんどくさくてまだヘルプが出ません…。関数の使い方は、しばらくは察するかAPIの公式ドキュメントを読んでください。すみません。
バグ報告や要望は、Github(英語)またはTwitter(日本語)などにお願いします。
こうしたツールを使って、Rによる素敵な管理社会を実現していきましょう。古事記にもこう書かれています:
2 + 2 <- 5
is a valid expression as far as the parser is concerned.
1984的な。