我正在创建一个PHP脚本,将在谷歌驱动器帐户内创建文件夹。一旦文件夹创建后,我将使用权限与我的谷歌应用程序域的其他用户共享它。
我已经成功地创建了这个部分,现在我需要添加一个可以通过UI完成的函数,但我找不到通过api来完成的方法:我想将文件夹添加到用户的my files部分(可能在子文件夹中)通过UI可以完成到"与我共享的文件"部分,右键单击并选择"添加到我的文件"
我如何用编程方式做到这一点?有办法吗?
编辑
我想在用户目录
中以编程方式完成此操作https://i.stack.imgur.com/II3Q6.png目前,我可以在用户目录中创建文件和文件夹,只是我不知道如何添加从其他用户共享的文件夹
我找到了问题的答案。我离开这里了,所以如果有人需要它;)
要在用户B "my files"中添加用户a的共享文件夹,您需要以用户B的身份访问驱动器api,获取共享文件夹(它与用户a实例中的共享文件夹具有相同的id),并将该文件夹的根目录或用户B驱动器中的文件夹添加为父目录。
$about = $userBServiceInstance->about->get();
$userBRootFolderId = $about->getRootFolderId();
$newParent = new Google_Service_Drive_ParentReference();
$newParent->setId($userBRootFolderId);
$userBServiceInstance->parents->insert($folderId, $newParent);
我不知道我是否正确理解了你的问题,但是为了以编程方式在Google Drive的根目录中创建一个文件夹,您可能要使用以下代码。在Google Drive中,文件夹是一种特殊的文件类型(即application/vnd.google-apps.folder
),有关更多信息,请参阅他们的API文档。
$client = new Google_Client();
// set various parameters, including name, key and secret
$service = new Google_Service_Drive($client);
$about = $service->about->get();
$rootID = $about->getRootFolderId();
createFolderIfNotExists($service, $rootID, "stackfolder");
// creates a folder in the given rootID or returns the ID if it already exists
function createFolderIfNotExists($service, $rootID, $foldername) {
$search = "title='{$foldername}' AND '{$rootID}' in parents AND mimeType = 'application/vnd.google-apps.folder' AND trashed != true";
$parameters = array("q" => $search);
$files = $service->files->listFiles($parameters);
if (!empty($files["items"])) {
$folderID = $files["items"][0]->getId(); // the first element
} else {
// create a folder under root
$file = new Google_Service_Drive_DriveFile();
$file->setTitle($foldername);
// To create new folder, we need to set the mime type
$file->setMimeType('application/vnd.google-apps.folder');
// set parent folder
$parent = new Google_Service_Drive_ParentReference();
$parent->setId($rootID);
$file->setParents(array($parent));
$folder = $service->files->insert($file);
$folderID = $folder->getId();
}
return $folderID;
}
将addParents
添加到文件/文件夹中,使用API V3 drive.files.update
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID?addParents=PARENT_ID&key={YOUR_API_KEY}