![](/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.