При получении событий с помощью API Календаря Google важно знать, что все результаты разбиты на страницы, и Google не требуется возвращать все события на одной странице, даже если все ваши события поместятся на одной.
Это определение параметра maxResults
согласно Справочнику по календарному API :
Максимальное количество событий, возвращаемых на одной странице результатов. Количество событий на получающейся странице может быть меньше, чем это значение, или вообще не иметь значения , даже если имеется больше событий, соответствующих запросу . Неполные страницы могут быть обнаружены непустым полем nextPageToken
в ответе. По умолчанию значение равно 250 событиям. Размер страницы никогда не может превышать 2500 событий. Дополнительно.
Чтобы исправить это, вы должны реализовать цикл для получения всех событий и использовать nextPageToken
:
$CalURL="https://www.googleapis.com/calendar/v3/calendars/primary/events"
$header=@{
Authorization = "Bearer $($tokens.access_token)"
maxResults='2500'
}
$result = Invoke-RestMethod -Headers $header -Uri $CalURL -Method Get -ContentType 'application/json'
$FullResults = @()
$result.items | ForEach-Object { $FullResults += $_ }
# Check if the results have a value for nextPageToken
while($null -ne $result.nextPageToken) {
$header=@{
Authorization = "Bearer $($tokens.access_token)"
maxResults='2500'
nextPageToken="$($result.nextPageToken)"
}
$result = Invoke-RestMethod -Headers $header -Uri $CalURL -Method Get -ContentType 'application/json'
$result.items | ForEach-Object { $FullResults += $_ }
}
$FullResults
Вышеприведенное должно повторяться до тех пор, пока не будут получены все страницы