如何根据所有者使用 PHP 和 Google 驱动器 API 获取所有文件夹和文件
How to get all folders & files based on Owner using PHP with Google Drive API
如何根据所有者获取所有文件和文件夹?
https://imgur.com/gallery/uf8nXOX
我试过这个查询,但它只是列出了所有与我共享的内容:
<?php
//fields can be use files(id, name, modifiedTime, mimeType, parents, trashed, permissions, webViewLink, webContentLink, exportLinks), nextPageToken
$client = new Google_Client();
$client->setApplicationName('Google Drive API PHP Quickstart');
$client->setAuthConfig('gdrive/json/'. $_SESSION['json'] . '.json');
$client->setScopes(Google_Service_Drive::DRIVE);
$client->setSubject($_SESSION['json_email']);
$client->setAccessType('offline');
$service = new Google_Service_Drive($GLOBALS['client']);
$parameters['pageSize'] = 250;
$parameters['q'] = "sharedWithMe and mimeType='application/vnd.google-apps.folder'";
//"mimeType='application/vnd.google-apps.folder' and 'root' in parents and trashed=false";
$parameters['fields'] = 'files(id, name,modifiedTime,owners), nextPageToken';
//'files(id, name, modifiedTime, mimeType, parents, trashed, permissions, webViewLink, webContentLink, exportLinks), nextPageToken';
$files = $service->files->listFiles($parameters);
foreach( $files as $k => $file ){
echo " <tr>
<td><large><i class='ti-folder'></i></large>
";
$forlinkowners = $file['owners'];
foreach ($forlinkowners as $pp => $getowner2){
echo "<a href='rmsystems.php?shared&&id=".$file['id']."&&foldername=".$file['name']."&&email=".$getowner2['emailAddress']."'>";
echo folder_from_rename($file['name']) . "  <span class='badge badge-primary'>link</span>";
echo "</a></td>
<td><i class='ti-crown'></i>  ".retrieve_name($getowner2['emailAddress']).
"</td>";
}
echo "</tr> ";
}
?>
我只想按所有者对它们进行分组。有什么建议么?我将如何在 PHP 中进行操作,或者我应该在 google API 中查询吗?
非常感谢!
您的请求正在使用 sharedWithMe 您应该使用“owners in”
"'test@example.org' in owners"
来自评论
您无法搜索不在文件夹(父文件夹)中的文件您只能搜索文件夹中的文件
'root' in parents
将 return root 中的所有文件。但是 'root' not in parents
将失败,因为它无效。
我 100% 确定您所说的父键是什么意思。如果您只想要某些目录中的文件,我建议您 运行 请求每个您想要的目录,而忽略您不需要的目录。这将意味着多个请求或只是获取所有内容并在本地排序。
参考:
如何根据所有者获取所有文件和文件夹?
https://imgur.com/gallery/uf8nXOX
我试过这个查询,但它只是列出了所有与我共享的内容:
<?php
//fields can be use files(id, name, modifiedTime, mimeType, parents, trashed, permissions, webViewLink, webContentLink, exportLinks), nextPageToken
$client = new Google_Client();
$client->setApplicationName('Google Drive API PHP Quickstart');
$client->setAuthConfig('gdrive/json/'. $_SESSION['json'] . '.json');
$client->setScopes(Google_Service_Drive::DRIVE);
$client->setSubject($_SESSION['json_email']);
$client->setAccessType('offline');
$service = new Google_Service_Drive($GLOBALS['client']);
$parameters['pageSize'] = 250;
$parameters['q'] = "sharedWithMe and mimeType='application/vnd.google-apps.folder'";
//"mimeType='application/vnd.google-apps.folder' and 'root' in parents and trashed=false";
$parameters['fields'] = 'files(id, name,modifiedTime,owners), nextPageToken';
//'files(id, name, modifiedTime, mimeType, parents, trashed, permissions, webViewLink, webContentLink, exportLinks), nextPageToken';
$files = $service->files->listFiles($parameters);
foreach( $files as $k => $file ){
echo " <tr>
<td><large><i class='ti-folder'></i></large>
";
$forlinkowners = $file['owners'];
foreach ($forlinkowners as $pp => $getowner2){
echo "<a href='rmsystems.php?shared&&id=".$file['id']."&&foldername=".$file['name']."&&email=".$getowner2['emailAddress']."'>";
echo folder_from_rename($file['name']) . "  <span class='badge badge-primary'>link</span>";
echo "</a></td>
<td><i class='ti-crown'></i>  ".retrieve_name($getowner2['emailAddress']).
"</td>";
}
echo "</tr> ";
}
?>
我只想按所有者对它们进行分组。有什么建议么?我将如何在 PHP 中进行操作,或者我应该在 google API 中查询吗?
非常感谢!
您的请求正在使用 sharedWithMe 您应该使用“owners in”
"'test@example.org' in owners"
来自评论
您无法搜索不在文件夹(父文件夹)中的文件您只能搜索文件夹中的文件
'root' in parents
将 return root 中的所有文件。但是 'root' not in parents
将失败,因为它无效。
我 100% 确定您所说的父键是什么意思。如果您只想要某些目录中的文件,我建议您 运行 请求每个您想要的目录,而忽略您不需要的目录。这将意味着多个请求或只是获取所有内容并在本地排序。