Как сохранять информацию по лидам в Google-таблицы

В этой статье разберем скрипт для сохранения информации по лидам в Google-таблицы. В отличие от скрипта сохранения лидов в CSV-таблицу, этот метод удобнее тем, что Google-таблицу можно редактировать онлайн, экспортировать в .XLSX, .PDF, .CSV и др., а так же организовывать совместный доступ к данным.

Для того, чтобы начать работать с таблицами по API, необходимо установить библиотеку для работы с Google APIs Google APIs Client Library for PHP

Устанавливаем ее на сервер с помощью Composer, указав путь к папке с проектом
cd /path/project/
composer require google/apiclient:^2.0
Или можете скачать архив с библиотекой по моей ссылке и распаковать его на сервере.

Также необходимо получить ключ-файл для доступа к API Google и email сервисного аккаунта. Как это сделать я писал в статье Как получить ключ-файл для работы с API Google-таблиц.

Создаем новую таблицу в GoogleDocs и даем доступ сервисному аккаунту.
Доступ для сервисного аккаунта
Доступ для сервисного аккаунта


Для отправки данных в таблицу необходимо получить ее идентификатор — spreadsheetId. Он прописан в url страницы
spreadsheetId
spreadsheetId


Загружаем на сервер файл-ключ и создаем index.php со следующим содержимым
<?php
/*
// Сохранение информации по лидам в таблицу Google
// Скрипт принимает и обрабатывает запросы вида
// site.ru/?name=kimoncar&phone=79876543210&geo=RU&offer=Idealica&other=Partnerka
//
// ВАЖНО, чтобы в запросе обязательно передавался телефон в параметре phone
//
// Author: kimoncar
// Copyright https://uproof.pro
*/

//Подключаем библиотеку
require_once __DIR__ . '/vendor/autoload.php';

//Путь к ключ-файлу сервисного аккаунта
$puth_keyfile = '/assets/eastern-cosmos-278108-5eed7fb8303f.json';

//ID таблицы из url
$spreadsheetId = '1iFfM-UAd_Pd9K4Z7fc1SbkzBnH4r2MzLwVDwxpfEI3c';
//Имя листа
$range = 'Лист1';

//Работаем, если передан телефон
if ($_GET['phone']) {
	//Разбираем параметры запроса в массив
	mb_parse_str($_SERVER['QUERY_STRING'], $params);

	//Вырезаем из телефона все символы, кроме цифр
	$params['phone'] = preg_replace('/[^0-9]/', '', $params['phone']);

	//Добавляем дату и время записи
	$date = array('date' => date('d.m.Y H:i:s'));
	$data = array_values($date + $params);	

	//Подключаем ключ-файл сервисного аккаунта
	$googleAccountKeyFilePath = __DIR__ .$puth_keyfile;
	putenv( 'GOOGLE_APPLICATION_CREDENTIALS=' . $googleAccountKeyFilePath );
	 
	// Документация https://developers.google.com/sheets/api/
	$client = new Google_Client();
	$client->useApplicationDefaultCredentials();
	 
	// Области, к которым будет доступ
	// https://developers.google.com/identity/protocols/googlescopes
	$client->addScope( 'https://www.googleapis.com/auth/spreadsheets' );
	$service = new Google_Service_Sheets($client);
	
	//Получаем содержимое листа
	$response = $service->spreadsheets_values->get($spreadsheetId, $range);
	//Количество записей на листе
	$count_lines = count($response->values);

	//Готовим данные для записи
	$values[] = $data;
	$gtable = new Google_Service_Sheets_ValueRange(['values' => $values]);
	$options = array('valueInputOption' => 'RAW');

	//Если таблица не пустая
	if ($count_lines > 0) {
		//Разбираем содержимое таблицы для исключения дублей
		foreach ($response->values as $key => $value) {
			$phones[] = $value[2];  // цифра 2 указывает на колонку таблицы с номерами телефонов
		}
		//Проверяем на дубль перед записью
		if (!in_array($params['phone'], $phones)) {
			//Если строки с таким телефоном нет, то пишем в таблицу
			$service->spreadsheets_values->update($spreadsheetId, $range.'!A'.($count_lines+1), $gtable, $options);
		}
	} else {
		//Если таблица пустая, делаем первую запись в таблицу
		$service->spreadsheets_values->update($spreadsheetId, $range.'!A'.($count_lines+1), $gtable, $options);
	}	
}
?>
Порядок параметров запроса определяет порядок колонок в таблице. Важно, чтобы в запросе был передан номер телефона в параметре phone.

В первую колонку скрипт пишет дату и время создания записи.
Также скрипт проверяет номер телефона на уникальность во избежание дублей.

Этот скрипт нужно положить на хостинг и обращаться к нему GET-запросами.
Например, в файле, который обрабатывает данные с формы и отправляет в партнерку (api.php или getform.php) можно добавить код отправки GET-запроса:
$savetotable = array(
	'name' => $name,
	'phone' => $phone,
	'geo' => $country,
	'offer' => 'Idealica',
	'other' => 'Partnerka'
);
file_get_contents('http://site.ru/?'.http_build_query($savetotable));
Значения переменных $name, $phone и $country берем из массива POST, который был передан формой с лэндинга.
Передаваемых параметров может быть сколько угодно.
23.05.2020 г. 543

Комментарии ()

  1. Серей
    27 ноября 2021, 21:05
    Я перевел своих клиентов на webjack, делает все то же самое, минимальный тариф дешевле.
    Можно получить месяц бесплатно по промокоду semen21, напишите его в чат техподдержки на сайте

    Комментарии

    UpRoof.pro 2020