10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Microsoft Graph を使ってみよう : ノートリソース (OneNote)

Last updated at Posted at 2018-05-22

Microsoft Graph における OneNote

OneNote は OneDrive、グループ、SharePoint ドキュメントなど様々な場所に存在します。それぞれの場所において、同一の操作が可能です。OneNote は以下の要素で構成されており、それぞれが Microsoft Graph リソースとなります。

  • ノートブック
  • セクション
  • セクショングループ
  • ページ
  • リソース

Microsoft Graph の OneNote API は非常に充実しており、データの取得だけでなく作成や更新もできるため、非常に使い甲斐があります。

ノートブックリソース

OneNote のノートブックを表すリソースです。

主なシナリオ

  • ノートブックの一覧取得、作成、更新、削除
  • 最近使ったノートブックの取得
  • ノートブックのコピー

ノートブックリソースの操作

いくつか代表的な操作を以下に紹介します。

ノートブック一覧の取得
パスに場所を指定することで、任意の場所のノートブックが取得できます。

GET: https://graph.microsoft.com/v1.0/me/onenote/notebooks
GET: https://graph.microsoft.com/v1.0/groups/{id}/onenote/notebooks
GET: https://graph.microsoft.com/v1.0/sites/{id}/onenote/notebooks

C#
await graphClient.Me.Onenote.Notebooks.Request().GetAsync();
await graphClient.Groups["id"].Onenote.Notebooks.Request().GetAsync();
await graphClient.Sites["id"].Onenote.Notebooks.Request().GetAsync();

ノートブックの作成

POST: https://graph.microsoft.com/v1.0/me/onenote/notebooks

Body
{
  "displayName": "decode 2018用"
}
C#
await graphClient.Me.Onenote.Notebooks.Request().AddAsync(new Notebook()
{
    DisplayName = "decode 2018用"
});

特定のノートブックや最近使ったノートブックを取得する
最近のノートを取得する場合、個人のノートブックを含めるか指定可能。

GET: https://graph.microsoft.com/v1.0/me/onenote/notebooks/{id}
GET: https://graph.microsoft.com/v1.0/me/onenote/notebooks/getRecentNotebooks(includePersonalNotebooks=true)

C#
await graphClient.Me.Onenote.Notebooks["id"].Request().GetAsync();
await graphClient.Me.Onenote.Notebooks.GetRecentNotebooks(true).Request().GetAsync();

セクションリソース

OneNote のセクションを表すリソースです。

主なシナリオ

  • セクション一覧の取得、作成、コピー
  • セクションのページ一覧を取得、作成

セクションリソースの操作

いくつか代表的な操作を以下に紹介します

セクションの作成

POST: https://graph.microsoft.com/v1.0/me/onenote/notebooks/{id}/sections

Body
{
  "displayName": "セッションについて"
}
C#
await graphClient.Me.Onenote.Notebooks["id"].Sections.Request().AddAsync(new OnenoteSection()
{
    DisplayName = "セッションについて"
});
Capture.PNG

セクションの一覧および特定セクションの取得
セクションはノートブックから辿ることも、全体から探すことも出来ます。

GET: https://graph.microsoft.com/v1.0/me/onenote/notebooks/{id}/sections
GET: https://graph.microsoft.com/v1.0/me/onenote/sections
GET: https://graph.microsoft.com/v1.0/me/onenote/sections/{id}

C#
await graphClient.Me.Onenote.Notebooks["id"].Sections.Request().GetAsync();
await graphClient.Me.Onenote.Sections.Request().GetAsync();
await graphClient.Me.Onenote.Sections["id"].Request().GetAsync();

セクショングループリソース

セクショングループは名前のとおり、複数のセクションをグループ化したものです。

主なシナリオ

  • セクショングループ一覧の取得、作成
  • セクショングループ内のセクション一覧を取得、作成

セクショングループリソースの操作

いくつか代表的な操作を以下に紹介します。

セクショングループの作成とグループ内にセクションの作成

POST: https://graph.microsoft.com/v1.0/me/onenote/notebooks/{id}/sectionGroups

Body
{
  "displayName": "セッションについて"
}

POST: https://graph.microsoft.com/v1.0/me/onenote/sectionGroups/{id}/sections

Body
{
  "displayName": "Microsoft Graph 関連セッション"
}
C#
var sectionGroup = await graphClient.Me.Onenote.Notebooks["id"].SectionGroups.Request().AddAsync(new SectionGroup()
{
    DisplayName = "セッションについて"
});
await graphClient.Me.Onenote.SectionGroups[sectionGroup.Id].Sections.Request().AddAsync(new OnenoteSection()
{
    DisplayName = "Microsoft Graph 関連セッション"
});
Capture.PNG

ページリソース

OneNote のページ表すリソースです。

主なシナリオ

  • ページの一覧取得、作成、取得、更新、削除
  • ページをサクションにコピー

ページリソースの操作

いくつか代表的な操作を以下に紹介します。

ページの作成
ページ本体は HTML で表現できますが、バイナリを含める場合などは multipart/form-data として表現します。またページを作成するセクションを指定して作ります。以下はシンプルなページを作っていますがマルチパートのサンプルは page を作成する を参照

POST: https://graph.microsoft.com/v1.0/me/onenote/sections/{id}/pages

Header
Content-type: text/html
Body
<!DOCTYPE html>
<html>
  <head>
    <title>Microsoft Graph セッションアジェンダ</title>
  </head>
  <body>
    <p>Build から新機能を紹介する</p>
    <p>認証</p>
    <img src="https://user-images.githubusercontent.com/13203188/37057063-1076865a-217e-11e8-862b-e2211642175d.png" alt="認証のイメージ" width="500" />
  </body>
</html>
C#
await graphClient.Me.Onenote.Sections["id"].Pages.Request().AddAsync(@"<!DOCTYPE html>
<html>
  <head>
    <title>Microsoft Graph セッションアジェンダ</title>
  </head>
  <body>
    <p>Build から新機能を紹介する</p>
    <p>認証</p>
    <img src=""https://user-images.githubusercontent.com/13203188/37057063-1076865a-217e-11e8-862b-e2211642175d.png"" alt=""認証のイメージ"" width=""500"" />
  </body>
</html>", "text/html", CancellationToken.None);
Capture.PNG

ページの取得

GET: https://graph.microsoft.com/v1.0/me/onenote/pages/{id}/content

C#
await graphClient.Me.Onenote.Pages["id"].Content.Request().GetAsync();

リソースリソース

OneNote のページ上にあるオブジェクトの事です。

主なシナリオ

  • リソースの取得

リソースリソースの操作

リソースの取得
ページのコンテンツを取得した際、リソースがあればリソースのアドレスが表示されます。そこにアクセスすることでリソースが取得できます。リンクはページからしか取得できません。

GET: https://graph.microsoft.com/v1.0/users('{user_id}')/onenote/resources/{resource_id}/$value

C#
await graphClient.Users["user_id"].Onenote.Resources["resource_id"].Content.Request().GetAsync();

まとめ

OneNote は非常にリッチなメモとしても、OCR としても色々使えます。プログラムに組み込むとできることが充実します。是非試してください。

目次に戻る

参照

Microsoft Graph での OneNote 操作
Microsoft Graph でのノートブック操作
Microsoft Graph でのセクション操作
Microsoft Graph でのセクショングループ操作
Microsoft Graph でのページ操作
Microsoft Graph でのリソース操作

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?