Невозможно внести два изменения на странице OneNote - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно завершить задачи на странице пользователя через MS Graph API.Если задачи находятся в списке, после операции замены для задачи список становится неработоспособным.К счастью, я нашел хак для завершения задачи, не нарушая список: Работа с содержимым страницы OneNote с помощью API API Graph

  1. Вставить завершенную копию целевой задачи перед ней
  2. Заменить целевую задачу пустым блоком

Если я отправлю эти 2 операции в одном запросе - API вернет 500.

Можно ли это исправить?


Подробности о странице и запросах:

enter image description here

Макет страницы (GET /me/onenote/pages/{{pageId}}/content?includeIDs=true)

<html lang="en-US">
    <head>
        <title>Nested list</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="created" content="2018-10-04T09:46:00.0000000" />
    </head>
    <body data-absolute-enabled="true" style="font-family:Calibri;font-size:11pt">
        <div id="div:{b883c993-0084-480b-9f15-3b0407435f29}{144}" style="position:absolute;left:96px;top:139px;width:624px">
            <p id="p:{b883c993-0084-480b-9f15-3b0407435f29}{146}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Super task</p>
            <p id="p:{b883c993-0084-480b-9f15-3b0407435f29}{153}" style="margin-top:0pt;margin-bottom:0pt">Point 1</p>
            <p id="p:{b883c993-0084-480b-9f15-3b0407435f29}{155}" style="margin-top:0pt;margin-bottom:0pt">Point 2</p>
            <p id="p:{b883c993-0084-480b-9f15-3b0407435f29}{149}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Mega task</p>
            <p id="p:{b883c993-0084-480b-9f15-3b0407435f29}{151}" data-tag="to-do" style="margin-top:0pt;margin-bottom:0pt">Mega subtask</p>
        </div>
    </body>
</html>

Запрос на обновление (PATCH /me/onenote/pages/{{pageId}}/content):

[
  {
    "action": "insert",
    "position": "before",
    "target": "p:{b883c993-0084-480b-9f15-3b0407435f29}{146}",
    "content": "<p data-tag=\"to-do:completed\" style=\"margin-top:0pt;margin-bottom:0pt\">Super task</p>"
  }, {
    "action": "replace",
    "target": "p:{b883c993-0084-480b-9f15-3b0407435f29}{146}",
    "content": "<span></span>"
  }
]

Ответ API:

{
    "error": {
        "code": "19999",
        "message": "Something failed, the API cannot share any more information at the time of the request.",
        "innerError": {
            "request-id": "d352cd80-b40d-4d55-b984-2bb5cae07f2b",
            "date": "2018-10-04T04:24:25"
        }
    }
}

1 Ответ

0 голосов
/ 05 октября 2018

Возможно ли это исправить?

Да.Используя пакетный запрос .

Обходной путь для вас, я все еще работаю над форматированием данных тела:

   {
  "requests": [
    {
      "id": "1",
      "url": "/me/onenote/pages/{page-id}/content",
      "method": "PATCH",
      "body": {
        "value": [
          {
            "action": "insert",
            "position": "before",
            "target": "p:{04b55584-a5f7-4ac2-b34d-474ebe346ce8}{69}",
            "content": "<p data-tag=\"to-do:completed\" style=\"margin-top:0pt;margin-bottom:0pt\">Super task</p>"
          }
        ]
      },
      "headers": {
        "Content-Type": "application/json"
      }
    },
    {
      "id": "2",
      "url": "/me/onenote/pages/{page-id}/content",
      "method": "PATCH",
      "body": {
        "value": [
          {
            "action": "replace",
            "target": "p:{04b55584-a5f7-4ac2-b34d-474ebe346ce8}{69}",
            "content": "<span></span>"
          }
        ]
      },
      "headers": {
        "Content-Type": "application/json"
      }
    }
  ]
}
...