Получите все корневые сайты, перечисленные в центре администрирования точки общего доступа, с помощью бета-версии API Graph.

Мне нужны все корневые сайты, перечисленные в Центре администрирования точки общего доступа, показанном на изображении введите здесь описание изображения

Для этого я использую API Graph следующим образом:

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "https://graph.microsoft.com/beta/sharepoint/sites",
  "method": "GET",
  "headers": {
    "authorization": "Bearer token",
    "cache-control": "no-cache",
    "postman-token": "3116b007-e574-5ad4-aedd-3b35fbf76b61"
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

Но это дает вывод следующим образом,

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#sharePoint/sites",
  "value": [
    {
      "createdDateTime": "2017-02-18T13:03:01.263Z",
      "description": "",
      "id": "2422c3a2-3c51-40f1-8483-5454aead43c4,412bb897-c754-460a-962d-db22893a1649",
      "lastModifiedDateTime": "2017-04-24T02:16:43Z",
      "name": "",
      "webUrl": "https://mps330124.sharepoint.com",
      "root": {},
      "siteCollection": {
        "hostname": "mps330124.sharepoint.com"
      },
      "siteCollectionId": "2422c3a2-3c51-40f1-8483-5454aead43c4",
      "siteId": "412bb897-c754-460a-962d-db22893a1649"
    }
  ]
}

Как я могу добиться этого, используя бета-версию Graph API?


person selvakumar    schedule 26.04.2017    source источник


Ответы (4)


Невозможно получить полный список семейств веб-сайтов через Microsoft Graph. Эта функция доступна «только для администратора» в API SharePoint и не доступна через Microsoft Graph.

Мы работаем над некоторыми изменениями в API сайтов SharePoint для Microsoft Graph, которые будут развернуты в течение следующих нескольких недель, чтобы сделать возможным поиск по списку сайтов/коллекций сайтов, но мы пока не планируем вносить доступна возможность перечисления всех сайтов/коллекций сайтов через Microsoft Graph.

Посмотрите журнал изменений, посвященный конференции Build 2017 (10 мая). -12), чтобы узнать все подробности.

person Ryan Gregg    schedule 26.04.2017
comment
Райан, не могли бы вы поделиться, какую функцию API SharePoint можно использовать сегодня для получения этой информации? В настоящее время мы используем CSOM, но я не был уверен, что есть лучший способ, позволяющий нам использовать только токены OAuth для получения этих данных. Было бы здорово, если бы API Сайтов включал какой-то механизм для получения этого. - person vinod; 23.05.2017
comment
Были ли обновлены сведения о том, как лучше всего получить список семейств веб-сайтов верхнего уровня? - person vinod; 01.11.2017

Использование звездочки в конечной точке поиска по сайту работает

https://graph.microsoft.com/v1.0/sites?search=*

возвращается

{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites",
"value": [
    {
        "createdDateTime": "2017-09-15T01:11:50Z",
        "description": "Let's capture our thoughts in this subsite blog.",
        "id": "xyz.sharepoint.com,5a58bb09-1fba-41c1-8125-69da264370a0,5e9767b8-95bc-4bd1-aeb0-defabcdefabc",
        "lastModifiedDateTime": "0001-01-01T08:00:00Z",
        "name": "internalblogs",
        "webUrl": "https://xyz.sharepoint.com/internalblogs",
        "displayName": "Internal blog"
    },
    {   
        ...
    }]
}
person debueb    schedule 15.01.2018
comment
важное примечание: это работает только в конечной точке версии 1.0, если вы используете это в конечной точке бета-версии, произойдет сбой. Я также не уверен, означает ли это, что эта опция будет исключена из будущих выпусков. - person Nick Prozee; 20.03.2018
comment
Это здорово, сработало. Кажется, Klipfolio использовал это. - person Varadha31590; 07.11.2018
comment
Поскольку это использует поисковый индекс. Это не даст вам представление о коллекциях веб-сайтов в режиме реального времени. Есть также несколько сценариев, в которых семейство веб-сайтов также не будет возвращено. Для этого есть запрос на функцию голосового управления здесь fetch-all-the-site-coll" rel="nofollow noreferrer">officespdev.uservoice.com/forums/ - person Jeremy Thake MSFT; 26.11.2018
comment
Также не забывайте, что этот запрос не вернет все результаты. По умолчанию возвращается только 200 результатов. - person Lukas Nespor; 10.12.2018

Кажется, теперь есть способ получить список коллекций сайтов верхнего уровня с помощью следующего запроса:

GET https://graph.microsoft.com/beta/sites?select=siteCollection,webUrl&filter=siteCollection/root%20ne%20null

Это документировано на следующей странице (обновление от 19 сентября): https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/site_list

Однако мой собственный тест не принес никаких результатов, потому что API возвращает ошибку Cannot enumerate sites. Альтернативным подходом может быть использование параметра запроса search (документы обновлены 20 сентября:

GET https://graph.microsoft.com/beta/sites?search=contoso&select=siteCollection,WebUrl&filter=siteCollection/root ne null

Но это только предоставляет siteCollection для root :/ со списком всех sites и их webUrl других siteCollection's (например, по умолчанию /sites и /teams), но не фактический URL/имя хоста siteCollection, к которому они принадлежат. Хотя это можно извлечь из компонента пути webUrl.

person smotti    schedule 01.11.2017

То, что вы получаете, не является ошибкой.

Если вы переходите на siteCollectionId с URL-адресом https://graph.microsoft.com/beta/sharepoint/sites/2422c3a2-3c51-40f1-8483-5454aead43c4/sites вы получите список сайтов в этом семействе сайтов.

person RasmusW    schedule 26.04.2017
comment
Привет, извините, это не ошибка. Я неправильно набрал. Я попробовал URL graph.microsoft.com/beta /sharepoint/сайты/. Он предоставит только подсайты запрошенного «Коллекции сайтов (2422c3a2-3c51-40f1-8483-5454aead43c4/)». Но мне нужны все сайты корневого уровня. - person selvakumar; 26.04.2017