Как обойти выдачу только 100 элементов списка по умолчанию в запросах REST API SharePoint и как генерировать записи через PowerShell

Сегодня вылезла бага в одном моем решении для SharePoint online – модуль выводил только первые 100 элементов. Круглое значение меня насторожило еще больше, чем мысль о щепетильности заметившего ошибку – это ж надо было посчитать количество записей 🙂 Но надо воспроизвести и исправить.

Чтоб воспроизвести ошибку с выдачей 100 записей, надо их создать. Не создавать же вручную. Если PowerShell скриптов для SharePoint onpremise я писал много, то для SharePoint Online я практики пока маловато. В целом, с этим и связана ошибка, хотя в SharePoint 2019 было то же самое ограничение, но я про него не вспомнил.

Как создать записи в списке SharePoint online через PowerShell

Для этой задачи использую PowerShell и библиотеку PNP PS. Собственно, скрипт не самый сложный. В списке есть 2 поля формата DateTime. Это, пожалуй, было самым сложным в скрипте.

$url= 'https://markimarta.com/sites/Euro2024/'

Connect-PnPOnline -Url $url -Interactive
Set-PnPTraceLog -On -Level Debug
 

$listTitle = "My Events"


for ($i = 1; $i -lt 30; $i++) {

 $v = Get-Date -Date "2023-10-$i 10:00:00Z"
 $ve = Get-Date -Date "2023-10-$i 16:00:00Z"
 Add-PnPListItem -List "My Events" -Values @{"Title" = "Test Title"; "StartDate"= $v; "EndDate" = $ve; "BookObject" = 11; "Reservation_x0020_type" = "Blocked" }

}

А для получения более 100 записей через REST API SharePoint нужно добавить в запрос параметр $top=1000. Главное, не ставить более 5000 , т.к. это ограничение обходить можно только через рекурсию.

Для PNP JS в запросе нужно добавлять top(1000).

this._sp.web.lists.getByTitle(this._reserveList).items.filter( `((StartDate gt datetime'${stZ}') and (StartDate le datetime'${enZ}')) ` ).select("Id", "Title", "AllDay", "StartDate", "EndDate", "Reservation_x0020_type").top(1000)

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment







MarkiMarta.ru. Записки отца-программиста" с 2009 г.
Категория информационной продукции 18+
Яндекс.Метрика