Получить записи библиотеки документов SharePoint с VBA - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь получить все записи из библиотеки документов в Sharepoint. Эта библиотека состоит из папок, подпапок и файлов. Я могу использовать MSXML2.XMLHTTP60 для доступа к библиотеке документов.

strRequest = "<?xml version='1.0' encoding='utf-8'?>" & _
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" & _
"  <soap:Body>" & _
"    <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>" & _
"      <listName>{FC3E18D6-33E5-4032-BE4B-F0F92F6F18BA}</listName>" + _
"      <viewFields><ViewFields>" & _
"      <FieldRef Name='ID'></FieldRef>" & _
"      </ViewFields></viewFields>" & _
"    </GetListItems>" & _
"  </soap:Body>" & _
"</soap:Envelope>"

Set xmlHTTP = CreateObject("MSXML2.XMLHTTP")
xmlHTTP.Open "POST", strURL, False
xmlHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlHTTP.setRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/GetListItems"
xmlHTTP.send strRequest

При этом будет получено все в корневой папке библиотеки документов (папки и файлы, но нет подпапок / подпапок). Как изменить или добавить этот код для извлечения всего, включая ВСЕ файлы из этой библиотеки документов, включая файлы в подпапках?

Получив список файлов, я поместил его в объект MSXML2.DOMDocument.3.0, чтобы выполнить итерацию и получить поля для каждого файла.

1 Ответ

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

Вы можете сделать это, используя ViewAttributes элемент с областью действия "RecursiveAll" внутри QueryOptions . Просто поставьте его после ViewFiels Я не могу проверить это, но что-то вроде этого:

<QueryOptions>
    <ViewAttributes Scope='RecursiveAll'/>
</QueryOptions>

Некоторая документация ViewAttributes:

Строка, представляющая все атрибуты, возвращаемые как часть элемента View при извлечении представления с помощью метода GetView. Этот элемент является необязательным, и его значение по умолчанию является пустым. Если указан параметр viewName, используются атрибуты представления из постоянного представления. Когда этот аргумент указан, он переопределяет любые атрибуты представления, которые можно извлечь из постоянного представления, указанного параметром viewName. Этот элемент является необязательным, и его значением по умолчанию является пустая строка. Чтобы вернуть все документы в библиотеке, элемент ViewAttributes используется следующим образом: . https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/bb263567%28v%3doffice.14%29

Здесь также есть пример использования этого веб-сервиса на VB, но без параметров запроса: https://msdn.microsoft.com/en-us/library/websvclists.lists.getlistitems.aspx?f=255&MSPPError=-2147217396&cs-save-lang=1&cs-lang=csharp#code-snippet-5

Если вышеуказанное решение не сработает, выполните поиск «CAML», потому что так называется эта разметка.

...