空談録

http://artfulplace.net/blogs/ からひっこしつつ

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のもののみを返します


ということで追加でこんな感じ

だらだらと過ごしていたら文章書かな過ぎてこれでいいのかみたいな状態に
うーん
しかしブログに書くこともなく

とりあえずこの辺で