Microsoft Graph で OneNote API を使用する場合のベスト プラクティス

この記事では、Microsoft Graph で OneNote API を使用するための推奨事項を提供します。 これらの推奨事項は、 Microsoft Q&A に関する一般的な質問に対する回答に基づいています。

$Select を使用して、必要なプロパティの最小限のセットを選択する

リソース (たとえば、ノートブック内のセクション) のクエリを実行するときには、次のような要求を行います。

GET ~/notebooks/{id}/sections

この要求は、セクションのすべてのプロパティを取得します。 ただし、すべてのプロパティが必要とは限りません。 次の例のように、$select クエリ パラメーターを使用して、必要なプロパティだけを返すことができます。

GET ~/notebooks/{id}/sections?$select=id,displayName

同じアプローチは、他の OneNote API に適用されます。

複数の API 呼び出しを実行するのではなく、$expand を使用します。

ユーザーのノートブック、セクション、およびセクション グループのすべてを階層的なビューで取得します。 次の方法でこれを行います。

  • GET ~/notebooks を呼び出して、ノートブックの一覧を取得します。

  • 取得したすべてのノートブックについて、GET ~/notebooks/{notebookId}/sections を呼び出してセクションの一覧を取得します。

  • 取得したすべてのノートブックについて、GET ~/notebooks/{notebookId}/sectionGroups を呼び出してセクション グループの一覧を取得します。

  • 必要に応じて、セクション グループを再帰的に反復処理できます。

この方法は機能します (サービスへの追加の順次ラウンドトリップがいくつかあります)。ただし、クエリ パラメーターを使用 $expand することをお勧めします。

GET ~/notebooks?$expand=sections,sectionGroups($expand=sections)

この方法では、1 つのネットワークラウンドトリップで同じ結果が得られます。パフォーマンスが向上します。

ユーザーに対してすべてのページを取得する場合は、セクションごとに個別に行ってください。

Microsoft Graph では、すべてのページを取得するためのエンドポイントが公開されます。ただし、このエンドポイントを使用して、ユーザーがアクセスできるすべてのページを取得することはお勧めしません。 ユーザーにセクションが多すぎてすべてのページを取得しようとすると、HTTP 状態コード 400 が生成され、次のメッセージが表示されます。"この要求に対してセクションの最大数を超えています。 セクション数が多いアカウントのページを取得するには、一度に 1 つのセクションのページを取得することをお勧めします。このエラー コードの詳細については、「 OneNote エラー コード」を参照してください。

ユーザーがアクセスできるすべてのページを取得するには、セクションごとに個別の呼び出しを行ってページを取得することをお勧めします。

たとえば、この呼び出しを使用する代わりに、(この API はページ化されているので、すべてのページを一度にフェッチすることはできません):

GET ~/pages

次の呼び出しを複数回使用することをお勧めします (特にすべてのセクションが必要ない場合)。

GET ~/sections/{id}/pages

ページのメタデータを取得するには、既定値 lastModifiedDateTime の順序付けを上書きします。 で並べ替える必要がない場合は、ページを取得する方が高速です lastModifiedDateTime。 これを行うには、たとえば他の任意のプロパティで並べ替えることができます。

GET ~/sections/{id}/pages?$select=id,title,createdDateTime&$orderby=createdDateTime