2014年3月30日日曜日

OneNote API で Web サイトのキャプチャを登録する

OneNote API を色々試しているシリーズ、今回は Web サイトのキャプチャを登録してみました。なお現在 OneNote API の制限として、「新規ノートの作成」のみが可能というのもありますので、色々試される場合は、OneDrive 上に作成されたノートを毎回削除する必要があります。

OneNote API チームの公式 Blog でも書かれていますが、将来的な対応ということでまずは新規作成のみに限りリリースを行ったとの事ですので、近いうちに編集も可能になるかと思います。

Web サイトのキャプチャ、と言われている方式は OneNote では複数の方法が用意されています。

  1. アドレスを指定して OneNote 側で参照を行いキャプチャ
  2. 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 側でキャプチャを行いその結果がノートに貼り付けられます。


image


このような感じでキャプチャが貼り付けられます。

0 件のコメント:

コメントを投稿