我使用 google Drive 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: $message\r\n";
$pageToken = null;
}
} while ($pageToken !== null);
return $files;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)