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 側でキャプチャを行いその結果がノートに貼り付けられます。
このような感じでキャプチャが貼り付けられます。
0 件のコメント:
コメントを投稿