"pageSize"参数在谷歌云端硬盘 api v3 中不起作用



我将谷歌驱动器 api v3 与 php 一起使用。我坚持一个问题。我将 pageSize 设置为 1000,但我只收到 300 多个文件和 nextPageToken。如果我只有 400 个文件并将 pageSize 设置为 1000,为什么我必须使用 nextPageToken?

$drive = new Google_Service_Drive($client);
$optParams = array(
'pageSize' => 1000,
'fields' => "nextPageToken, files(id,name,mimeType,webContentLink,webViewLink)",
'q' => "'" . $folderId . "' in parents and trashed = false",
'orderBy' => 'name'
);
$results = $drive->files->listFiles($optParams);

有多种情况会导致输出集限制为小于建议的页面大小。 例如,在文件字段中包括permissions将限制每个集合为 100 个,而包括parents将限制为每个 360 个项目。 可能还有其他条件。

底线,您不能可靠地依赖于将最大输出设置为使用pageSize请求的大小。 为了确保您获得请求的完整文件集,您需要检查并处理nextPageToken

下面是一个示例:

function GetFiles($service)
{
$fileFields =
'id, mimeType, name, ownedByMe, owners, parents, webContentLink';
$options =
[
'pageSize' => 1000,
'supportsAllDrives' => true,
'fields' => "files($fileFields), nextPageToken"
];
$files = [];
$pageToken = null;
do
{
try
{
if ($pageToken !== null)
{
$options['pageToken'] = $pageToken;
}
$response = $service->files->listFiles($options);
$files = array_merge($files, $response->files);
$pageToken = $response->getNextPageToken();
}
catch (Exception $exception)
{
$message = $exception->getMessage();
echo "exception: $messagern";
$pageToken = null;
}
} while ($pageToken !== null);
return $files;
}

最新更新