Обновите страницу OneNote с помощью API разработчика

Я попытался обновить страницу в OneNote со ссылкой Microsoft: http://msdn.microsoft.com/en-us/library/office/jj680118.aspx

Вот моя проблема. Когда я попытался обновить свою страницу с правильным идентификатором, она выдала мне сообщение об ошибке: Исключение из HRESULT: 0x80042000.

Вот мой код:

  static void UpdatePageContent()
  {
        ApplicationClass onApplication = new ApplicationClass();
        String strImportXML;

        strImportXML = @"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>" +
           "   <one:Page xmlns:one="+"http://schemas.microsoft.com/office/onenote/12/2004/onenote\""+"" +
           "ID=\"{5BE09697-903A-45DD-88D4-8AD301A3D91F}{1}{B0}\">" +
           "      <one:PageSettings RTL=\"false\" color=\"automatic\">" +
           "         <one:PageSize>" +
           "            <one:Automatic/>" +
           "         </one:PageSize>" +
           "         <one:RuleLines visible=\"false\"/>" +
           "      </one:PageSettings>" +
           "      <one:Title style=\"font-family:Calibri;" +
           "           font-size:17.0pt\" lang=\"en-US\">" +
           "         <one:OE alignment=\"left\">" +
           "            <one:T>" +
           "               <![CDATA[My Sample Page]]>" +
           "            </one:T>" +
           "         </one:OE>" +
           "      </one:Title>" +
           "      <one:Outline >" +
           "         <one:Position x=\"120\" y=\"160\"/>" +
           "         <one:Size width=\"120\" height=\"15\"/>" +
           "         <one:OEChildren>" +
           "            <one:OE alignment=\"left\">" +
           "               <one:T>" +
           "                  <![CDATA[Sample Text]]>" +
           "               </one:T>" +
           "            </one:OE>" +
           "         </one:OEChildren>" +
           "      </one:Outline>" +
           "   </one:Page>";

        // Update page content
        try
        {
            onApplication.UpdatePageContent(strImportXML, System.DateTime.MinValue);
        }
        catch (COMException e)
        {
            Console.WriteLine("Error Message : " + e.Message);
        }
    }

Я действительно не знаю, как это решить.


person Sebastien    schedule 13.02.2013    source источник
comment
Эта ссылка не очень полезна. Давайте посмотрим код, который генерирует исключение, пожалуйста.   -  person Paul Sasik    schedule 13.02.2013
comment
Извините, я забыл. Спасибо за оставшееся   -  person Sebastien    schedule 13.02.2013


Ответы (2)


Ваш XML не подходит для OneNote.

Вот список кодов ошибок: http://msdn.microsoft.com/en-us/library/office/jj680117.aspx

Вы можете избавиться от первой строки, поскольку @Sebastian заявил, что она все равно искажена, и мой опыт показывает, что OneNote в ней не нуждается.

Кроме того, помните, что вам не нужно отправлять всю страницу. Вам просто нужно отправить objId страницы и любые обновленные объекты. Итак, необходимо добавить одну схему, тогда это также должно работать:

"<one:Page xmlns:one=\"http://schemas.microsoft.com/office/onenote/12/2004/onenote\" +
       "ID=\"{5BE09697-903A-45DD-88D4-8AD301A3D91F}{1}{B0}\">" +
       "      <one:Outline >" +
       "         <one:Position x=\"120\" y=\"160\"/>" +
       "         <one:Size width=\"120\" height=\"15\"/>" +
       "         <one:OEChildren>" +
       "            <one:OE alignment=\"left\">" +
       "               <one:T>" +
       "                  <![CDATA[New Text]]>" +
       "               </one:T>" +
       "            </one:OE>" +
       "         </one:OEChildren>" +
       "      </one:Outline>";

Просто будет добавлен этот новый контур.

Если у вас все еще возникают проблемы (он не жалуется, но содержимое не обновляется), проверьте дополнительные параметры для UpdatePageContent, конечно, в API 2013 можно отправить дату последнего изменения для проверки, а также есть параметр для принудительного локального перезаписать.

person Darren Beale    schedule 03.11.2013

В строке strImportXML есть некоторые проблемы, которые приводят к сбою обновления.

  • Настройте @"<?xml version="+"1.0"+" encoding="+"utf-16"+"?>" на "<?xml version=\"" + "1.0" + "\" encoding=\"" + "utf-16" + "\"?>"
  • Добавьте пустое место перед атрибутом идентификатора страницы ( + " " + "ID...
    вместо + "" + "ID)
  • Убедитесь, что идентификатор страницы найден/присутствует в вашей onApplication иерархии.
  • Убедитесь, что вы ссылаетесь на библиотеку COM с соответствующим пространством имен
    , определенным в элементе one:Page (например, библиотека объектов Office 2013/15.0
    имеет другое пространство имен).
person Dani    schedule 08.03.2013