OneNote service APIについての続き
時間とやる気と精神力が足りない
ブログの記事を追ってたらもうちょっといろいろとわかったので書いていきます
今回のテーマはGET /pagesと$orderbyとかのクエリについてです
こんなブログ読んでいられるか!という方は MSDN Blogs に全部書いてあるのでこちらをどうぞ
GET /pagesについて
v1.0でアクセスするとService Unavailableを返してくれるのは前回の通りですが、betaでリクエストすることでちゃんと帰ってくるようです
こんな感じで
Request Url : https://www.onenote.com/api/beta/sections/{SECTIONS ID}/pages
Response :
{ "@odata.context":"https://www.onenote.com/api/Beta/$metadata#pages", "value":[ { "title":"...", "createdByAppId":"WLID-...", "links":{ "oneNoteClientUrl":{ "href":"onenote:https://d.docs.live.net/..." }, "oneNoteWebUrl":{ "href":"https://onedrive.live.com/redir.aspx?cid=...&page=edit&resid=...&wd=target..." } }, "id":"...", "createdTime":"2014-09-09T14:37:50.587Z" }, { "title":"...", "createdByAppId":"WLID-...", ... } ] }
こんな感じのが返ってきます
parentNotebookとparentSectionは$selectしても返ってこないです。どういうことなんでしょうか…
すごいどうでもいいですが$select=parentSectionで取得すると"value":[{},{},{},{}]とか帰ってきます。存在しないパラメータ$select=hogeはBad Requestなのでそういうことなのでしょう…
MSDN Blogsのほうのコメントまで読んでなかったという
$expandで使えるようにするから今は返さないぜ的なこと言ってましたね
またページはGET /api/beta/pagesでも取れます
こっちはセクション固定じゃないので最後に作成したページから順に取得してくれます
ちなみにレスポンスは一緒です
$orderbyとか$selectとか
これはOData v4.0 Standardで作られてるとかなんとからしいのでOData Version 4.0 Part 1: Protocolを参考にすれば何とかなりそうです
使えるのは$select, $filter, $top, $skip, $orderbyらしいです
さらに$filterはComparison, Logical OperatorとString Functionsのみ利用可能?という感じです
というよりはStringのフィールドしか存在しないためだと思われますが…
…って思ってたらcreatedTimeがどうもstringじゃないっぽいですね
(stringでComparison Operatorの<とか>もなんかおかしい感じですし)
$selectと$orderbyはフィールド名を入力します
複数の場合はカンマ区切りで指定です
フィールド名として利用できるのはvalueの配列内のフィールドのみです
(parentSectionとかはさっき書いた通り)
さらに$orderbyはフィールド名の後にasc, desc(昇順、降順)を指定できます
$orderbyの例はこんな感じ
$orderby=id desc
$orderby=title desc,id asc
asc,descは必須(?)でasc,descの後にカンマを入れるのが重要です
$top,$skipはそれぞれ先頭から取得する件数、先頭からスキップする件数を入れます。どっちも数字です
で、$filterは条件を書いてtrueのもののみを返します
ということで追加でこんな感じ
だらだらと過ごしていたら文章書かな過ぎてこれでいいのかみたいな状態に
うーん
しかしブログに書くこともなく
とりあえずこの辺で