我正在努力使用Google API PHP客户端库在Team Drive中创建文件夹。
我正在使用服务帐户并冒充作为Team Drive成员的用户(本人),并且可以列出该驱动器的内容。但是,当我创建文件夹时,它总是在“我的驱动器”而不是指定的团队驱动器中创建。
尝试1
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope("https://www.googleapis.com/auth/drive");
$client->setSubject('[email protected]');
$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”:“未找到文件: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或更高版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句