Как установить пользовательский идентификатор файла при загрузке файла на Google Drive с помощью Google Drive API? (PHP) - PullRequest
0 голосов
/ 21 марта 2020

Я работаю над проектом, в котором мне нужно загрузить файл .xlsx на мой диск Google с помощью Google Drive API. Затем также вернуть ссылку, чтобы я мог сохранить ее в MySQL базе данных.

Загрузка завершена. Проблема в том, как вернуть ссылку на файл, чтобы редактировать ее с помощью Google Sheets. Я думаю, что мне нужно добавить пользовательский идентификатор файла в мой файл. Я действительно не знаю, где добавить это. Мой код ниже:

// Get the API client and construct the service object.
$client = getClient();
$service = new Google_Service_Drive($client);
$filefullname=$_GET['accid'].' '.$_GET['name'].'.xlsx';
// UPLOADING OF FILE TO GOOGLE DRIVE////////////////////////////////////
//fopen('./client_sheets/'.$_GET['name'], "w");
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    $file = new Google_Service_Drive_DriveFile();
        $file_path = './client_sheets/'.$filefullname;
        $mime_type = finfo_file($finfo, $file_path);
        $file->setName($filefullname);
        $file->setDescription('This file contains details about: '.$filefullname.' || Client of GT Security');
        $file->setMimeType($mime_type);
        $file->setName($filefullname);
        $createdFile = $service->files->create(
            $file,
            array(
                'data' => file_get_contents($file_path),
                'mimeType' => $mime_type,
                'fields' => 'id'
            )
        );

print 'File ID: %s' % $createdFile->getId();

Дополнительная информация: я использовал PhpSpreadsheet для создания файла .xlsx. Кто-нибудь может добавить поле FileID для меня? Кроме того, кто-нибудь может объяснить мне, как получить ссылку на файл, чтобы я мог редактировать ее с помощью Google Sheets?

1 Ответ

0 голосов
/ 23 марта 2020

В этом случае вы можете использовать функцию преобразования c в Google Drive. Когда вы создаете файл на диске Google, он будет автоматически преобразован в файл электронной таблицы. Чтобы вы могли открыть его через службу электронных таблиц и получить URL-адрес, который необходимо сохранить в своей базе данных.

Создайте и преобразуйте файл .xlsx в файл электронной таблицы:

$fileMetadata = new Google_Service_Drive_DriveFile(array(
    'name' => $filefullname,
    'mimeType' => 'application/vnd.google-apps.spreadsheet'));
$content = file_get_contents($file_path);
$file = $driveService->files->create($fileMetadata, array(
    'data' => $content,
    'mimeType' => 'text/csv',
    'uploadType' => 'multipart',
    'fields' => 'id'));

Получите URL электронной таблицы:

$spreadsheetId = $file->id;

$sheetService = new Google_Service_Sheets($client);
$response = $service->spreadsheets->get($spreadsheetId);
$sheetUrl = $response->getSpreadsheetUrl();

Ссылки:

PHP Методы класса электронной таблицы

Импорт в типы документов Google

...