насчет отлова меток не знаю, а вот в google таблице отправлять данные это просто
Принцип такой: Собираете данные, делаете POST запрос в google. Этот запрос отлавливает Ваш скрипт и разбирает данные по ячейкам таблицы.
для этого
В google таблице заходите в "Инструменты->Редактор скриптов" и пишите код приема
function doPost(e) {
if(typeof e !== 'undefined')
var par = JSON.parse(e.postData.contents);
PutDataInSheet(par);
return ContentService.createTextOutput("ok");
}
function PutDataInSheet(e) {
// в кавычках ключ вашей таблицы, его взять в адресной строке, когда вы находитесь в вашей таблице
var wbk = SpreadsheetApp.openById("1Q3yDiWwOMosybBho_attZYW6roT4SOP4-oHPDARzA_s"); // таблица - февраль 2018
// далее идет разбор данных и раскладка по ячейкам
var wks = wbk.getSheetByName("сайт");
var row = wks.getLastRow()+1;
var d = new Date();
wks.getRange("A"+row).setValue(e['updated_at']);
wks.getRange("B"+row).setValue(e['id']);
wks.getRange("C"+row).setValue(e['billing_address']['last_name'] + ' ' + e['billing_address']['first_name']);
// Убираем все символы кроме цифр из номера телефона
var phn = e['billing_address']['phone'];
phn = phn.replace(/[^\d]/g, "");
wks.getRange("D"+row).setValue(phn);
wks.getRange("E"+row).setValue(e['billing_address']['address_1']);
wks.getRange("G"+row).setValue(parseFloat(e['subtotal']));
for (i in e['line_items']) {
var item = e['line_items'][i];
wks.getRange("J"+row).setValue(item['sku']);
wks.getRange("K"+row).setValue(item['quantity']);
wks.getRange("L"+row).setValue(parseFloat(item['subtotal']));
wks.getRange('A' + row + ':L' + row).setBackground('#d9ead3');
row ++;
}
}
Сохраняете проект и выбираете "Опубликовать->Развернуть как веб приложение". Получите ссылку для доступа к приложению. Ее надо скопировать и вставить в серверный код
Далее надо написать серверный код для отправки
/**
* выполняет отправку заказа в google таблицы
*/
public static function SendOdrerToGoogleSheet($order_id){
// собираем данные в массив
$order = self::getOrderDetailById($order_id);
// ссылка на WEB приложение
$url = 'https://script.google.com/macros/s/AKfycby_0wdvKJuWbRZEdJUY1xeRWXmUiRTOuX584HhAxtde4y8ZKJ4/exec';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходит по редиректам
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24");
curl_setopt($ch, CURLOPT_POST, 1); // Do a regular HTTP POST
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($order)); // Set POST data
$response = curl_exec($ch);
curl_close($ch);
}
Ну вот и все. Код взят с рабочего инструмента.
Единственное что я так и не разобрался как настроить CURL на асинхронную передачу. Ну что бы не ждал ответа. Данные то отправляем в одностороннем порядке, зачем тормозить сервер ожиданием