簡體   English   中英

如何使用 Google API 在團隊雲端硬盤中創建文件夾?

[英]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. 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 或更高版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM