#php #google-api #google-drive-api #google-api-php-client
#php #google-api #google-drive-api #google-api-php-client
Вопрос:
Я пытаюсь создать папку на вновь созданном общем диске, используя клиент PHP API Google со следующим кодом (обратите внимание, что подключение к API и сервис работают без проблем):
//Create the drive
$drive = new Google_Service_Drive_Drive();
$drive->setName( "Drive Name" );
$create_drive_response = $service->drives->create( uniqid(), $drive );
$drive_id = $create_drive_response->id;
//Create the folder
$folder = new Google_Service_Drive_DriveFile();
$folder->setName ( "Folder Name" );
$folder->setMimeType ( 'application/vnd.google-apps.folder' );
$folder->setDriveId ( $drive_id );
$optional_params = [ 'supportsAllDrives' => true];
$create_folder_response = $service->files->create( $folder, $optional_params );
$folder_id = $create_folder_response->id()
Диск создается без проблем, и папка создается без проблем, но независимо от того, что я делаю, папка всегда создается в корне моего диска, а не на вновь созданном диске. В ответе нет ошибок или предупреждений.
Ответ №1:
В документации об этом нигде не упоминается, но при создании папки или файла на общем диске вам необходимо установить как свойство ‘DriveId’, так и свойство ‘parents’ для идентификатора общего диска с помощью $folder->setParents ( $drive_id );
:
//Create the drive
$drive = new Google_Service_Drive_Drive();
$drive->setName( "Drive Name" );
$create_drive_response = $service->drives->create( uniqid(), $drive );
$drive_id = $create_drive_response->id;
//Create the folder
$folder = new Google_Service_Drive_DriveFile();
$folder->setName ( "Folder Name" );
$folder->setMimeType ( 'application/vnd.google-apps.folder' );
$folder->setDriveId ( $drive_id );
$folder->setParents ( $drive_id );
$optional_params = [ 'supportsAllDrives' => true];
$create_folder_response = $service->files->create( $folder, $optional_params );
$folder_id = $create_folder_response->id();
Комментарии:
1. Примечание: С 1 июня 2020 года параметр «supportsAllDrives» обесценился, и предполагается, что все приложения поддерживают общие диски. developers.google.com/resources/api-libraries/documentation /…
2. Получил его для работы
$folder->setParents([$drive_id]);
(parents
должен быть массив идентификаторов).3. И ВКЛЮЧЕНИЕ
supportsAllDrives
параметра.