Дата публикации: 09.11.2018
Дата обновления: 17.12.2021
В данной статье я попытаюсь вам объяснить как быстро сделать подключение ваших PHP скриптов к Гугл докам, и создать таблицу в Google Sheets (Sheetspread), обновить ячейки, удалить или создать лист в таблице.
«Нагугливая» много информации по тому как создать таблицы в Google Docs я не нашел ничего полезного, но всё же есть немного полезных ссылочек. И вот я вам скину самые полезные из них:
А теперь я попытаюсь вам лично объяснить как использовать таблицы Google через PHP в кратце.
Для начала вам понадобиться Composer и несколько зависимостей.
Мой Composer.json выглядит вот так:
{
"require": {
"asimlqt/php-google-spreadsheet-client": "3.0.*",
"google/apiclient": "^2.0"
}
}
Исходя из него вы сами сможете составить свой Composer.json, самое важное это composer require asimlqt/php-google-spreadsheet-client и google/apiclient
О том как установить Composer я писал ранее здесь: https://neatek.ru/install-composer-debian-apt-get-install-latest
После подключения всех зависимостей, пробуем создать таблицу по уже произведенной авторизации, у вас должен быть accessToken который получают при авторизации, с правами:
'email',
'https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive.file'
Чтобы просто создать файл в Google Drive производим следующие действия:
$sheettitle = 'Моя первая таблица в Гугл';
$driveService = new Google_Service_Drive($client); // Здесь ваш класс new Google_Client()
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => $sheettitle,
'mimeType' => 'application/vnd.google-apps.spreadsheet' // указываем Mime-type файла
));
$file = $driveService->files->create($fileMetadata, array('fields' => 'id')); // указываем что нужно вернуть нам $file->id
Вуаля, наш файл создан.
Далее чтобы получить наш spreadsheet производим следующие действия.
use Google\Spreadsheet\DefaultServiceRequest;
use Google\Spreadsheet\ServiceRequestFactory;
$serviceRequest = new DefaultServiceRequest($accessToken); // Здесь токен который был получен при авторизации
ServiceRequestFactory::setInstance($serviceRequest);
$spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetFeed = $spreadsheetService->getSpreadsheetFeed();
$spreadsheet = $spreadsheetFeed->getByTitle($sheettitle); // Здесь название созданной таблицы
В итоге мы получили нашу таблицу которая готова к изменениям.
Попробуем удалить наш первый лист который по-умолчанию размеров 100х10, где 100 строк, и 10 колонок, это обычно мало.
$worksheetFeed = $spreadsheet->getWorksheetFeed();
$worksheet = $worksheetFeed->getByTitle('Лист1');
$worksheet->delete();
Мы удалили первый наш лист в таблице. Но на замену нужно создать другой лист других размеров, соответственно наш код измениться так:
$spreadsheet->addWorksheet('Мой лист новый', 2000, 100); // 2000 строк + 100 колонок
$worksheetFeed = $spreadsheet->getWorksheetFeed();
$worksheet = $worksheetFeed->getByTitle('Лист1');
$worksheet->delete();
Теперь в нашей таблице только 1 лист наших размеров.
Для заполнения таблиц есть очень великолепный инструмент как BatchRequest, посылаем запросы «стопкой», а не по одному:
$cellFeed = $worksheet->getCellFeed();
$batchRequest = new Google\Spreadsheet\Batch\BatchRequest();
for($i=1;$i<10;$i++) {
$batchRequest->addEntry($cellFeed->createCell($i,1, 'Ячейка заполнена'));
}
$batchResponse = $cellFeed->insertBatch($batchRequest);
В результате этого у нас будет 1 столбец с записями Ячейка заполнена ровно в 8 строк.
На этом всё, урок закончен. Теперь вы можете создавать таблицы, создавать листы, удалять листы, и заполнять данными листы в таблицах.
Всем хорошего дня!
Внимание! Действует ограничение на количество ячеек на всей таблице это 500.000 штук.
также после смены WordsheetFeed (getByTitle) нужно обязательно производить Wordsheet (getCellFeed)