Биты и байты.

Биты и байты.

вторник, 17 мая 2016 г.

Экпресс доступ к данным в Sharepoint

Как быстро получить данные из списка SharePoint не пользуясь веб сервисами.
Самый быстрый способ получить их это конечно  нажать кнопку Экспорт в Excel и Бинго.

Посмотрим что скрывается за этой выгрузкой. Откроем файл подключения


В нем можно найти все реквизиты и параметры

http://сайт/_vti_bin/owssvr.dll?XMLDATA=1&List={2187857A-977C-43F6-BF4A-0D10A8410A41}&View={3BD82CF2-EA85-4CD3-81B8-17150794A091}&RowLimit=0&RootFolder=%2fLists%2fList7
Selection={2187857A-977C-43F6-BF4A-0D10A8410A41}-{3BD82CF2-EA85-4CD3-81B8-17150794A091}
EditWebPage=
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False
SharePointApplication=http://сайт/_vti_bin
SharePointListView={3BD82CF2-EA85-4CD3-81B8-17150794A091}
SharePointListName={2187857A-977C-43F6-BF4A-0D10A8410A41}
RootFolder=/Lists/List7

Как видим используется вызов RPC,
Немного информации  SharePoint Foundation RPC Protocol 


{0} – ссылка на сайт.  Корневой или любой подсайт.
{1} –GUID списка

Также можно использовать представления для выгрузки данных


таким образом наша ссылка в усеченном варианте  будет иметь вид


Результат можно непосредственно проверить в браузере
Ну а дальше XML можно использовать в скрипте на свое усмотрение.


P\S:
На самом деле этот способ не всегда удобен и имеет свои ограничения, однако наглядный и простой.

Для остальных случаев есть  RESTJSOM or SOAP Services.
Пример ниже демонстрирует как получить элементы из списка использую  SharePoint REST API:

function getListItems(webUrl, listName, success, failure) {
    var url = webUrl + "/_vti_bin/listdata.svc/" + listName;
    $.ajax({
        url: url,
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        success: function (data) {
            success(data.d.results);
        },
        error: function (data) {
            failure(data.responseJSON.error);
        }
    });
}


//Usage
getListItems('https://contoso.sharepoint.com/project/', 'Tasks', function (taskItems) {
    console.log(taskItems);
    for (var i = 0; i < taskItems.length; i++) {
        console.log(taskItems[i].TaskName);
    }
},
  function (error) {
      console.log(JSON.stringify(error));
  }
);


About