Intereting Posts
Как использовать userAgent для обнаружения мобильного устройства Не удается подключиться к MySQL на Mac – отсутствует файл mysql.sock выход из системы и перенаправление сеанса в php Удаление PHP из базы данных с помощью codeigniter Какова правильная настройка PHP для подключения к MS SQL 2000/2005? Не удается отправить сгенерированную форму Рекурсивно удалять пустые элементы и подмассивы из многомерного массива Программист пытается выяснить собственный проект с использованием PHP Как включить отображение ошибок PHP только в подпапке Как получить уникальные значения из столбца и сгруппировать их со значениями из другого столбца? Как настроить php.ini для использования gmail в качестве почтового сервера Проблема с простыми HTTP-запросами с Laravel Routes.php ZF2 – Как использовать Hydrator / exchangeArray () для заполнения вложенного объекта Вытягивание данных из MySQL в json-массив Автоматическое создание настраиваемых значений полей в WordPress

Как создать папку в Team Drive с помощью API Google?

Я пытаюсь создать папку в 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', 'supportsTeamDrives' => true, 'parents' => ['0AIuzzEYPQu9CUk9PVA'] )); 

Попытка 2

 $fileMetadata = new Google_Service_Drive_DriveFile(array( 'name' => 'New Test Folder', 'mimeType' => 'application/vnd.google-apps.folder', 'supportsTeamDrives' => true, 'teamDriveID' => '0AIuzzEYPQu9CUk9PVA' )); 

ОБНОВЛЕНИЕ Попытка 3

 $fileMetadata = new Google_Service_Drive_DriveFile(array( 'name' => 'Hello 123', 'supportsTeamDrives' => 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 дает эту ошибку: Fatal error: Uncaught Google_Service_Exception: {"error": {"errors": [{"domain": "global", "reason": "notFound", "message": "Файл не найден: 0AIuzzEYPQu9CUk9PVA . "," locationType ":" parameter "," location ":" fileId "}]

Я прочитал всю (ограниченную) документацию, касающуюся Team Drive и API, и понял, что папка / файл в Team Drive может иметь только один родительский элемент (идентификатор Team Drive), поэтому я попробовал варианты родителя как массив и строку ,

Папка создана правильно, не в том месте.

Если у кого-нибудь есть идеи, я буду благодарен за помощь.

благодаря

В документации не очень понятно, как обращаться с созданием папок внутри Teamdrives, но это две вещи, которые необходимо учитывать:

1. 'supportsTeamDrives' => true, является частью необязательных параметров, а не частью метаданных файла. 2. И parent и teamDriveId должны быть включены как часть метаданных

Итак, вот пример того, как добиться этого:

 $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', 'teamDriveId' => $parent, 'parents' => array($parent) )); $optParams = array( 'fields' => 'id', 'supportsTeamDrives' => true, ); $createdFile = $service->files->create($file, $optParams); print "Created Folder: ".$createdFile->id; 

Обратите внимание: вам понадобится клиентская библиотека версии 2.1.3 или выше.