![](/img/trans.png)
[英]How can I define a Google_Service_Drive variable correctly with Google Drive API using PHP to create a folder?
[英]How can I create a folder within a Team Drive with the Google API?
我正在努力使用 Google API PHP 客户端库在团队驱动器中创建一个文件夹。
我正在使用一个服务帐户并模拟一个用户(我自己),该用户是 Team Drive 的成员并且可以列出该驱动器的内容。 但是,当我创建一个文件夹时,它总是在“我的驱动器”而不是指定的团队驱动器中创建它。
尝试 1
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope("https://www.googleapis.com/auth/drive");
$client->setSubject('user@mydomain.com');
$service = new Google_Service_Drive($client);
$folderId = '0AIuzzEYPQu9CUk9PVA';
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'New Test Folder',
'mimeType' => 'application/vnd.google-apps.folder',
'supportsAllDrives' => true,
'parents' => ['0AIuzzEYPQu9CUk9PVA']
));
尝试 2
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'New Test Folder',
'mimeType' => 'application/vnd.google-apps.folder',
'supportsAllDrives' => true,
'driveId' => '0AIuzzEYPQu9CUk9PVA'
));
更新尝试 3
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'Hello 123',
'supportsAllDrives' => true,
'mimeType' => 'application/vnd.google-apps.folder',
'parents' => ['0AIuzzEYPQu9CUk9PVA']
));
$file = $service->files->create($fileMetadata, array(
'fields' => 'id'));
printf("Folder ID: %s\n", $file->id);
尝试 3 给出了这个错误:致命错误:未捕获的 Google_Service_Exception: { "error": { "errors": [ { "domain": "global", "reason": "notFound", "message": "File not found: 0AIuzzEYPQu9CUk9PVA .", "locationType": "参数", "location": "fileId" } ]
我已阅读有关 Team Drive 和 API 的所有(有限)文档,并了解 Team Drive 中的文件夹/文件只能有一个父级(Team Drive 的 ID),因此我尝试将父级变体作为数组和字符串.
该文件夹已正确创建,只是在错误的位置。
关于如何在 Teamdrives 中创建文件夹的文档不是很清楚,但这是您需要注意的两件事:
1. 'supportsAllDrives' => true,
是可选参数的一部分,而不是文件元数据的一部分。 2. parent
和driveId
都应作为元数据的一部分包含在内
所以这是一个关于如何实现这一点的例子:
$service = new Google_Service_Drive($client);
$parent = "0AA3C8xRqwerLglUk9PVA"; //Teamdrive ID
//Create new folder
$file = new Google_Service_Drive_DriveFile(array(
'name' => 'Test Folder',
'mimeType' => 'application/vnd.google-apps.folder',
'driveId' => $parent,
'parents' => array($parent)
));
$optParams = array(
'fields' => 'id',
'supportsAllDrives' => true,
);
$createdFile = $service->files->create($file, $optParams);
print "Created Folder: ".$createdFile->id;
请注意:您将需要客户端库版本 2.1.3 或更高版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.