Интеграция сайта и Google таблиц (Google spreadsheets)

  • Блог
  • Интеграция сайта и Google таблиц (Google spreadsheets)
image
image
image
Интеграция сайта и Google таблиц (Google spreadsheets)

Зачастую к разработчикам поступает задача интегрировать сайт с таблицами Google, это связано с тем, что маркетологам очень удобно работать и анализировать информацию в табличном виде.

Обладая навыками в веб разработке с помощью данной статьи Вы узнаете как выполнить интеграцию самостоятельно на языке php.

Регистрация сервисного аккаунта в Google API

Для получения авторизационных данных необходимо естественно иметь аккаунт Google, после чего можно пройти элементарную регистрацию приложения на сайте Google API .

В разделе "Учетные данные" нужно зарегистрировать сервисный аккаунт и получить ключ, после чего появится возможность скачать JSON файл со всеми необходимыми данными для работы приложения, этот файл можно будет переименовать как удобно и загрузить в рабочую директорию.

Подготовка библиотек PHP

Загрузить необходимые библиотеки а так же их зависимости мы рекомендуем через composer, для этого необходимо создать файл composer.json и туда добавить следующий код:

{
    "require": {
        "google/apiclient": "^2.2",
        "asimlqt/php-google-spreadsheet-client": "^3.0"
    }
}

Далее через консоль выполняем простую команду "composer install", после чего мы получаем все необходимые пакеты для дальнейшей работы.

Сразу хочется отметить, что при первом запуске программы Вы можете получить ошибку связанную с работой php настройки "mbstring.func_overload", ее можно избежать если закомментировать код в файле:

/vendor/phpseclib/phpseclib/phpseclib/bootstrap.php

Для работы библиотек необходимо подключить в начале проекта файл "/vendor/autoload.php"

В нашем проекте файл с авторизационными данными который Вы скачали на сайте Google API мы назвали "secret.json", в этом файле нас интересует служебный email адрес для работы приложения, он находится в параметре "client_email", Вам необходимо открыть доступ в своей Google таблице для этого адреса.

Ниже приводим работающий код на одном из наших проектов

require_once $_SERVER['DOCUMENT_ROOT'] . '/local/templates/conversite/vendor/autoload.php';

use GoogleSpreadsheetDefaultServiceRequest;
use GoogleSpreadsheetServiceRequestFactory;

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/my_secret.json');
/*  SEND TO GOOGLE SHEETS */
$client = new Google_Client;
try{
    $client->useApplicationDefaultCredentials();
    $client->setApplicationName("Something to do with my representatives");
    $client->setScopes(['https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds']);
    if ($client->isAccessTokenExpired()) {
        $client->refreshTokenWithAssertion();
    }

    $accessToken = $client->fetchAccessTokenWithAssertion()["access_token"];
    ServiceRequestFactory::setInstance(
        new DefaultServiceRequest($accessToken)
    );
    // Get our spreadsheet
    $spreadsheet = (new GoogleSpreadsheetSpreadsheetService)
        ->getSpreadsheetFeed()
        ->getByTitle('Orders');

    // Get the first worksheet (tab)
    $worksheets = $spreadsheet->getWorksheetFeed()->getEntries();
    $worksheet = $worksheets[0];


    $listFeed = $worksheet->getListFeed();
    $listFeed->insert([
        'имя' => "'". 'Имя клиента',
        'телефон' => "'". 'Телефон клиента',
        'дата' => date_create('now')->format('Y-m-d H:i:s')
    ]);

}catch(Exception $e){
    echo $e->getMessage() . ' ' . $e->getLine() . ' ' . $e->getFile() . ' ' . $e->getCode;
}

/*  SEND TO GOOGLE SHEETS */

Что нужно изменить для своего проекта

  • В строке putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/my_secret.json'); необходимо указать путь к Вашему файлу с секретным ключом
  • В методе getByTitle() указать название Вашей таблицы
  • В методе "insert" указать Ваши поля и значения для них

Надеемся что данная статья была полезна, если Вы столкнулись с какими то трудностями или хотите заказать интеграцию Google таблиц с сайтом Вы можете оставить заявку на сайте или по электронной почте info@conversite.ru

Заказать звонок