如何使用Google API在Team Drive中创建文件夹?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Google API在Team Drive中创建文件夹?相关的知识,希望对你有一定的参考价值。

我正在努力使用Google API php客户端库在Team Drive中创建一个文件夹。

我正在使用服务帐户并模仿作为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
", $file->id);

尝试3出现此错误:致命错误:未捕获Google_Service_Exception:{“error”:{“errors”:[{“domain”:“global”,“reason”:“notFound”,“message”:“找不到文件:0AIuzzEYPQu9CUk9PVA 。“,”locationType“:”参数“,”位置“:”fileId“}]

我已经阅读了有关Team Drive和API的所有(有限的)documentation,并了解Team Drive中的文件夹/文件只能有一个父级(Team Drive的ID),所以我尝试将父级的变体作为数组和字符串。

该文件夹是在错误的位置正确创建的。

如果有人有任何想法,我会很感激帮助。

谢谢

答案

关于如何处理Teamdrives内部文件夹创建的文档不是很清楚,但这是您需要注意的两件事:

1.'supportsAllDrives' => true,是可选参数的一部分,而不是文件元数据的一部分。 2. parentdriveId都应作为元数据的一部分

所以这是一个如何实现这个目标的例子:

$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或更高版本。

以上是关于如何使用Google API在Team Drive中创建文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 将文件上传到Google Team Drive

markdown Google Team Drive

从Google Colaboratory访问Google Team Drive中的数据

Flutter - 如何使用 Google Drive API 下载公共文件

如何使用 Google 服务帐户通过 Activity API 检索 Google Drive 活动?

如何在使用Google Drive API V3与他人共享时设置文件的功能?