OneNote API を色々試しているシリーズ、今回は Web サイトのキャプチャを登録してみました。なお現在 OneNote API の制限として、「新規ノートの作成」のみが可能というのもありますので、色々試される場合は、OneDrive 上に作成されたノートを毎回削除する必要があります。
OneNote API チームの公式 Blog でも書かれていますが、将来的な対応ということでまずは新規作成のみに限りリリースを行ったとの事ですので、近いうちに編集も可能になるかと思います。
Web サイトのキャプチャ、と言われている方式は OneNote では複数の方法が用意されています。
- アドレスを指定して OneNote 側で参照を行いキャプチャ
- HTML 構造を添付しその結果からキャプチャ
上記の方法で使うシーンが異なるケースもあることはあるのですが、個人的にはアドレス指定がメインで HTML 構造を添付する方法はなかなか使われないというか、その場合は画像として添付する方式を利用するのではないかな、と思います。なお、アドレス指定でキャプチャできないケースというのは、会員制サイトなどの認証が絡むケースで OneNote 側から参照できないサイトの場合になります。
アドレスを指定して OneNote 側で参照してもらう場合のコードは次のようになります。
1:Dim req = WebRequest.Create("https://www.onenote.com/api/v1.0/pages")
2: req.Method = "POST"
3: req.ContentType = "text/html"
4: req.Headers.Add("Authorization", "Bearer " + Application.Current.Properties("access_token"))
5:'POST する HTML
6:Dim postHtml = "<!DOCTYPE html>" + vbNewLine +
7:"<html>" + vbNewLine +
8:"<head>" + vbNewLine +
9:"<title>OneNote API を使った Web サイトキャプチャ POST サンプル</title>" + vbNewLine +
10:"</head>" + vbNewLine +
11:"<body>" + vbNewLine +
12:"<p>これは REST API を利用して Web サイトをキャプチャしたサンプルです。</p>" + vbNewLine +
13:"<img data-render-src=""http://blogahf.blogspot.jp/"" width=""400"" height=""400""></img>" + vbNewLine +
14:"</body>" + vbNewLine +
15:"</html>" + vbNewLine
16:'POST データの生成
17:Dim enc = Text.UTF8Encoding.UTF8
18:Dim postBytes = Text.Encoding.UTF8.GetBytes(postHtml)
19: req.ContentLength = postBytes.Length
20:'POST データの書き込み
21: Using st = req.GetRequestStream
22: st.Write(postBytes, 0, postBytes.Length)
23:End Using
24:'結果の受信
25:Dim resStrings = New Text.StringBuilder
26: Using res = req.GetResponse
27: Using sr = res.GetResponseStream
28: Using sRead = New IO.StreamReader(sr, enc)
29: resStrings.Append(sRead.ReadToEnd)
30:End Using
31:End Using
32:End Using
前回のサンプルと殆ど変り映えがなく、違いがあるのは POST している HTML の部分だけです。アドレスを指定してキャプチャする場合、img タグを利用します。data-render-src 属性でキャプチャしたい Web サイトのアドレスを指定すれば、OneNote 側でキャプチャを行いその結果がノートに貼り付けられます。
このような感じでキャプチャが貼り付けられます。