Добавление и создание таблиц в Google Docs через PHP

Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".

Дата публикации: 09.11.2018
Дата обновления: 17.12.2021

google-sheets-docs-sheet-spread-php-add-row-cell-update-insert-personal-fast-easy2

В данной статье я попытаюсь вам объяснить как быстро сделать подключение ваших PHP скриптов к Гугл докам, и создать таблицу в Google Sheets (Sheetspread), обновить ячейки, удалить или создать лист в таблице.

«Нагугливая» много информации по тому как создать таблицы в Google Docs я не нашел ничего полезного, но всё же есть немного полезных ссылочек. И вот я вам скину самые полезные из них:

  1. https://developers.google.com/drive/api/v3/integrate-create
  2. https://developers.google.com/drive/api/v3/reference/files/create
  3. https://developers.google.com/sheets/api/guides/values
  4. https://www.twilio.com/blog/2017/03/google-spreadsheets-and-php.html
  5. https://github.com/asimlqt/php-google-spreadsheet-client#adding-a-worksheet

А теперь я попытаюсь вам лично объяснить как использовать таблицы 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)

Кстати говоря, Вы можете сделать заказ у разработчика которого вы сейчас читаете, по любым вопросам с администрированием серверов, а также сайтами. Я помогу в любой задаче, оплата почасовая. Можете обратиться в Telegram для быстрой обратной связи, либо на почту которая на странице "Обо мне".

Пример реализации интерфейсов, абстрактных классов, сингтона, трейта и фасада в PHP