Создание страниц OneNote
Область применения: Пользовательские записные книжки в OneDrive | Корпоративные записные книжки в Microsoft 365.
Чтобы создать страницу OneNote, отправьте запрос POST в конечную точку pages. Пример:
POST ../notes/sections/{id}/pages
Отправьте в тексте сообщения HTML-код, определяющий страницу. Если запрос выполнен успешно, Microsoft Graph возвращает код состояния HTTP 201.
Примечание.
Сведения о запросах POST, которые можно отправлять для создания разделов, групп разделов и записных книжек, см. в интерактивном справочнике по REST.
Создание URI запроса
Чтобы создать URI запроса POST, начните с корневого URL-адреса службы:
https://graph.microsoft.com/v1.0/me/onenote
Затем добавьте конечную точку pages:
Создание страницы в любом разделе (по его названию)
.../pages?sectionName=DefaultSection
Создание страницы в любом разделе (по его идентификатору)
.../sections/{section-id}/pages
При создании страниц в личной записной книжке пользователя Microsoft Graph также предоставляет конечные точки, которые можно использовать для создания страниц в стандартной записной книжке:
Создание страницы в стандартном разделе стандартной записной книжки
../pages
Полный URI запроса будет выглядеть так, как в одном из следующих примеров:
https://graph.microsoft.com/v1.0/me/onenote/sections/{id}/pages
https://graph.microsoft.com/v1.0/me/onenote/pages?sectionName=Homework
См. дополнительные сведения о корневом URL-адресе службы.
Использование параметра sectionName URL-адреса
При создании страницы в именованном разделе записной книжки по умолчанию с помощью параметра sectionName действуют следующие правила:
Можно ссылаться только на разделы верхнего уровня (не внутри групп разделов).
Если в стандартной записной книжке нет раздела с указанным названием, API создает его. В названиях разделов не допускаются следующие символы:
? * \ / : < > | & # " % ~
При сопоставлении названий разделов регистр не учитывается, но он сохраняется при их создании. Например, если указать название "Мой новый раздел", то оно будет отображаться и дальше, но в последующих запросах можно использовать имя "мой новый раздел".
В названиях разделов следует использовать кодировку URL. Например, пробелы следует кодировать как %20.
Параметр sectionName действителен только с маршрутом
../notes/pages
(не../notes/sections/{id}/pages
).
Разделы создаются только в случае их отсутствия, поэтому этот вызов можно использовать для каждой страницы, создаваемой приложением. Пользователи могут переименовывать разделы, но при этом API создаст новый раздел с указанным вами названием.
Примечание.
Ссылки, возвращаемые интерфейсом API на страницы в переименованном разделе, по-прежнему будут указывать на старые страницы.
Составление текста сообщения
HTML-код, определяющий содержимое страницы, называют входным HTML-кодом. Входной HTML-код поддерживает часть стандартных атрибутов HTML и CSS, а также настраиваемые атрибуты. (Настраиваемые атрибуты, например data-id и data-render-src, описываются в статье Входной и выходной HTML-код.)
Отправьте входной HTML-код в тексте сообщения запроса POST. Входной HTML-код можно отправить непосредственно в тексте сообщения с помощью application/xhtml+xml
типа контента или text/html
или отправить его в части "Презентация" многокомпонентного запроса.
В приведенном ниже примере входной HTML-код отправляется прямо в тексте сообщения.
POST https://graph.microsoft.com/v1.0/me/onenote/pages
Authorization: Bearer {token}
Content-Type: application/xhtml+xml
<!DOCTYPE html>
<html>
<head>
<title>A page with a block of HTML</title>
<meta name="created" content="2015-07-22T09:00:00-08:00" />
</head>
<body>
<p>This page contains some <i>formatted</i> <b>text</b> and an image.</p>
<img src="https://..." alt="an image on the page" width="500" />
</body>
</html>
Если вы отправляете двоичные данные, необходимо использовать составной запрос.
Примечание.
Чтобы упростить программирование и обеспечение согласованности в приложении, вы можете использовать составные запросы для создания всех страниц. Рекомендуем использовать библиотеку для создания составных сообщений. Это снижает риск создания полезных данных в неправильном формате.
Требования и ограничения для входного HTML-кода в запросах POST для страниц
Отправляя входной HTML-код, учитывайте следующие требования и ограничения:
Входной HTML-код должен быть правильно оформленным XHTML-кодом с кодировкой UTF-8. Всем открывающим тегам контейнеров должны соответствовать закрывающие теги. Все значения атрибутов должны быть заключены в двойные или одинарные кавычки.
Код JavaScript, вложенные файлы и CSS удаляются.
HTML-формы полностью удаляются.
Microsoft Graph поддерживает подмножество элементов HTML.
Microsoft Graph поддерживает отдельные стандартные атрибуты HTML и ряд настраиваемых атрибутов, таких как атрибут data-id, используемый для обновления страниц. Поддерживаемые атрибуты описываются в статье Входной и выходной HTML-код.
Поддерживаемые атрибуты HTML и CSS для страниц OneNote
Поддерживаются не все элементы, атрибуты и свойства (в HTML4, XHTML, CSS, HTML5 и т. д). Microsoft Graph принимает ограниченный набор элементов HTML, более соответствующий особенностям работы с OneNote. Дополнительные сведения см. на странице Поддержка HTML-тегов для страниц. Если тег не указан на этой странице, скорее всего, он будет игнорироваться.
Ниже перечислены базовые типы элементов, которые поддерживает Microsoft Graph:
-
<head>
и<body>
-
<title>
и<meta>
, которые задают заголовок и дату создания страницы -
<h1>
—<h6>
для заголовков разделов -
<p>
для абзацев -
<ul>
,<ol>
и<li>
для списков и их элементов -
<table>
,<tr>
и<td>
, включая вложенные таблицы -
<pre>
для предварительно отформатированного текста (с сохранением пробелов и разрывов строк) -
<b>
и<i>
для полужирного текста и курсива
Microsoft Graph сохраняет семантическое содержимое и базовую структуру входного HTML-кода при создании страниц, но преобразует входной HTML-код для использования поддерживаемого набора элементов HTML и CSS. Функции, отсутствующие в OneNote, преобразовывать не во что, поэтому они могут не распознаваться в исходном HTML-коде.
Пример запроса
Этот пример составного запроса создает страницу, содержащую изображения и внедренный файл. Обязательная часть Presentation содержит входной HTML-код, определяющий страницу. Часть imageBlock1 содержит двоичные данные изображения, а fileBlock1 — двоичные данные файла. Части данных также могут содержать HTML-код. В этом случае Microsoft Graph отображает HTML-код в виде изображения на странице OneNote.
POST https://graph.microsoft.com/v1.0/me/onenote/pages
Authorization: Bearer {token}
Content-Type: multipart/form-data; boundary=MyPartBoundary198374
--MyPartBoundary198374
Content-Disposition:form-data; name="Presentation"
Content-Type:text/html
<!DOCTYPE html>
<html>
<head>
<title>A page with rendered images and an attached file</title>
<meta name="created" content="2015-07-22T09:00:00-08:00" />
</head>
<body>
<p>Here's an image from an <i>online source</i>:</p>
<img src="https://..." alt="an image on the page" width="500" />
<p>Here's an image uploaded as <b>binary data</b>:</p>
<img src="name:imageBlock1" alt="an image on the page" width="300" />
<p>Here's a file attachment:</p>
<object data-attachment="FileName.pdf" data="name:fileBlock1" type="application/pdf" />
</body>
</html>
--MyPartBoundary198374
Content-Disposition:form-data; name="imageBlock1"
Content-Type:image/jpeg
... binary image data ...
--MyPartBoundary198374
Content-Disposition:form-data; name="fileBlock1"
Content-Type:application/pdf
... binary file data ...
--MyPartBoundary198374--
Дополнительные примеры создания страниц, содержащих изображения и другие файлы, см. в статье Добавление изображений и файлов, наших руководствах и примерах. Кроме того, узнайте, как создавать элементы с абсолютным положением, использовать теги примечаний, а также извлекать данные из визитных карточек, рецептов из Интернета и описаний товаров.
Microsoft Graph требует строгого соответствия некоторым форматам, таким как символы новой строки CRLF в тексте составного сообщения. Чтобы снизить риск получения полезных данных в неправильном формате, для создания составных сообщений следует использовать библиотеку.
Если появится состояние 400 (неправильный формат полезных данных), проверьте форматирование символов новой строки и пробелов, а также наличие проблем с кодировкой. Например, попробуйте использовать параметр charset=utf-8
(пример: Content-Type: text/html; charset=utf-8
).
См. требования и ограничения для входного HTML-кода и ограничения размера запросов POST.
Информация о запросах POST для страниц и соответствующих ответах
Данные запроса | Описание |
---|---|
Протокол | Все запросы используют протокол SSL/TLS для HTTPS. |
Заголовок Authorization |
Если он отсутствует или является недействительным, запрос завершится ошибкой с кодом состояния 401. См. статью Проверка подлинности и разрешения. |
Заголовок Content-Type |
Составные запросы необходимы при отправке двоичных данных и используют тип контента |
Заголовок Accept | application/json |
Данные ответа | Описание |
---|---|
Код успешного завершения | Код состояния HTTP 201 |
Текст ответа | Представление OData новой страницы в формате JSON. |
Ошибки | Если запрос завершается сбоем, API возвращает ошибки в объекте @api.diagnostics в тексте ответа. |
Заголовок Location | URL-адрес ресурса новой страницы. |
Заголовок X-CorrelationId | GUID, уникальный идентификатор запроса. Это значение можно использовать вместе со значением заголовка Date при устранении неполадок совместно со службой поддержки Майкрософт. |
Составление корневого URL-адреса службы Microsoft Graph
В корневом URL-адресе службы Microsoft Graph используется следующий формат для всех вызовов Microsoft Graph:
https://graph.microsoft.com/{version}/me/onenote/
Сегмент version
URL-адреса представляет нужную версию Microsoft Graph. Используйте значение v1.0
для стабильного кода в рабочей среде. Используйте значение beta
, чтобы опробовать функцию, находящуюся на стадии разработки. Функции бета-версии могут меняться, поэтому не следует использовать их в производственном коде.
Используйте значение me
для содержимого OneNote, доступного текущему пользователю (если он является владельцем или с ним поделились этим содержимым). Используйте значение users/{id}
для содержимого OneNote, которым указанный (в URL-адресе) пользователь поделился с текущим пользователем. Используйте Microsoft Graph для получения идентификаторов пользователей.
Ограничения размера раздела OneNote
Существует ограничение на количество страниц, которые можно добавить в раздел с помощью API OneNote. Когда этот предел достигнут для раздела и предпринята попытка создать новую страницу в этом разделе, вы увидите ответ с кодом состояния HTTP 507
и сообщением «Превышено максимально допустимое количество страниц в разделе». Дополнительные сведения об этом коде ошибки см. В разделе Коды ошибок OneNote.
Вы можете использовать один из следующих обходных путей:
- Создайте новый раздел и добавьте туда новые страницы.
- Удалите неиспользуемые страницы из существующего раздела, который достиг ограничения страницы.
Permissions
Для создания страниц OneNote необходимо запрашивать соответствующие разрешения. Выберите минимальный уровень разрешений, необходимый для работы вашего приложения.
Варианты:
- Notes.Create
- Notes.ReadWrite
- Notes.ReadWrite.All
Дополнительные сведения об областях разрешений и принципе их использования см. в справочнике по разрешениям Microsoft Graph.