Если у Вас есть личный сайт, и Вы имеете к нему доступ (можете вносить изменения в PHP файлы), после несложной настройки, Вы сможете автоматически получать заказы в таблицу. Для этого проделайте такие настройки:
ВНИМАНИЕ! Для успешного выполнения данного кода, обязательно надо выбрать текущий активный лист, в него будут прописываться новые заказы.
Активный лист надо выбрать в меню «Автоматические функции«:
Находясь в таблице скопируйте этот «ключ»
Затем зайдите в «Расширения»- «Apps Script»
Откроется новая вкладка в браузере, удалите имеющийся там текст:
Вместо удаленного текста впишите этот код:
function doGet(e){Get_Post(e);}function doPost(e){Get_Post(e);}
function Get_Post(e) {
try{
var ss = SpreadsheetApp.openById("1VsHrBK0uawHUAcIY8fDSZ14KXTC_Ru8yMtfyfrwtGiU"); // меняем на свой ID таблицы
var arr = JSON.parse( Utilities.newBlob(Utilities.base64Decode(ss.getRange("Admin!Z20").getDataValidation().getCriteriaValues()[0].join(''))).getDataAsString());
var siteDop = JSON.parse(arr.siteDop);
var col = JSON.parse(arr.abc);
var np_t = JSON.parse(arr.np_t);
var delta = arr.delta=='1'?true:false, t = 10;
ss = ss.getSheetByName(siteDop.activList);
if (ss) var last = ss.getLastRow()+1; else return HtmlService.createHtmlOutput('Select active sheet');
if(col[0]) ss.getRange(col[0]+last).setValue(new Date()); // Установка текущей даты
if(col[1] && e.parameter.order) ss.getRange(col[1]+last).setValue(e.parameter.order); // Номер заказа
if(col[2] && e.parameter.name) ss.getRange(col[2]+last).setValue(e.parameter.name); // ФИО
// Адрес будет записан в комментарий:
if(col[10] && e.parameter.address) ss.getRange(col[10]+last).setValue(e.parameter.address);
//---------- Синхронизация с Новой почтой ----------------------------- start
// В случае если у Вас на сайте название городов и складов точно такие как они описаны в Новой почты, можно сделать синхронизацию отдельно города и склада:
// установите в GET запросе на своём сайте такие переменные
// "gorod" = город как он записан в самой Новой почте
// "sklad" = как он записан в самой новой почте
// "address_note" = примечание клиента, например адресная доставка
if(col[6] && e.parameter.gorod) {
ss.getRange(col[6]+last).setValue(e.parameter.gorod);
var VW = ss.getRange('Admin!V:W').getValues();
for (i = 0; i < VW.length && VW[i][0]; i++)
if (VW[i][0] == e.parameter.gorod) { // Город
var W = VW[i][1];
break;
}
}
if (col[7] && W && e.parameter.sklad) {
VW = ss.getRange('Admin!'+W);
W = VW.getValues();
for (i = 0; i < W.length; i++)
if (W[i][0].replace(/\(|\)|\"|\s/g,"").search(e.parameter.sklad.replace(/\(|\)|\"|\s|/g,"")) > 0) {
e.parameter.sklad = W[i][0];
t = 7;
break;
}
ss.getRange(col[7]+last).setDataValidation(SpreadsheetApp.newDataValidation().requireValueInRange(VW,delta).build());
ss.getRange(col[t]+last).setValue(e.parameter.sklad);
if (t==7) ss.getRange(col[10]+last).setValue('');
if (t==7 && e.parameter.address_note) ss.getRange(col[10]+last).setValue(e.parameter.address_note);
if (t==10 && e.parameter.address_note) ss.getRange(col[10]+last).setValue(e.parameter.sklad + ' ' + e.parameter.address_note);
}
//----------------------------------------------------------------------- end
if(col[4] && e.parameter.tovar) ss.getRange(col[4]+last).setValue(e.parameter.tovar.replace(/"/gi,'"').replace(/\n/gi,'\n')); // Название товара
if(col[5] && e.parameter.price) ss.getRange(col[5]+last).setValue(e.parameter.price.replace('.',',')); // Общая сумма заказа
if(col[3] && e.parameter.phone) ss.getRange(col[3]+last).setValue(e.parameter.phone.replace(/[^\d]/gi,'').substr(-10)); // Телефон
if(col[8] && e.parameter.pay) ss.getRange(col[8]+last).setValue(e.parameter.pay); // Вид оплаты (кто за что платит)
if(col[16] && e.parameter.np) ss.getRange(col[16]+last).setValue(e.parameter.np); // Устанавливает службу доставки ("НП")
if(col[18] && e.parameter.email) ss.getRange(col[18]+last).setValue(e.parameter.email); // Email клиента
ss.getRange(last+':'+last).setBackground('yellow');// Желтый фон строки
}catch(e){ss.getRange(col[12]+last).setValue(e.message+'\n'+e.stack);} // Ошибка будет записана в строку "ТТН>"
}
Эти переменные могут отличаться и быть другими от написанных выше. Если Вы их не знаете то обратитесь к программисту который настраивал, устанавливал Ваш сайт.
address — адрес пропишется в ячейку «Коментарий»,
tovar — товар в заказе, каждый новый товар с новой строки, в php коде используйте символ «\n»
phone — тел. преобразуется в необходимый формат для таблицы,
А саму ссылку необходимо поместить в функцию: file() если вы используете php или же сделать обычный GET запрос с нужными параметрами , должно получиться подобно такой строки для php:
file(«https://script.google.com/macros/s/AKfycbwJPs-GXIX7hIVtlYunpf_1vzuJeK-555iKeY3JVr0Hwm_2g/exec?name=».urlencode($name).»&address=».urlencode($adr).»&tovar=».urlencode($tovar).»&phone=».$tel);
col[0] - Дата,
col[1] - № заказа,
col[2] - ФИО,
col[3] - Телефон,
col[4] - Товар в заказе,
col[5] - Общая сумма (грн.),
col[6] - Адрес получателя,
col[7] - Номер склада для НП,
col[8] - Вид доставки,
col[9] - Номер ТТН,
col[10] - Комментарий,
col[11] - URL ТТН,
col[12] - Статус ТТН к получателю,
col[13] - Статус ТТН от получателя,
col[14] - Печать ТТН,
col[15] - Печать маркировки,
col[16] - Курьерская служба,
col[17] - Тип товара,
col[18] - Email,
col[19] - Адрес отправителя,
col[20] - Номер пакета (НП),
col[21] - Стоимость доставки,
col[22] - Обратный № ТТН,
col[23] - Дата когда забрали заказ,
col[24] - Дата создания ТТН,
col[25] - Учет товара (скрытый столб.),
col[26] - Закупка,
col[27] - Cсылка на чек, CheckBox,
col[28] - Наложка,
col[29] - Страна, для международных посылок УкрПочты,
col[30] - Штат — для отправки международных посылок УкрПочты,
col[31] - Адрес для УП — улица, номер дома, квартиры для отправки посылок УкрПочты,
col[32] - Шины и Диски для НП,
col[33] - Приват24,
col[34] - redBOX,
col[35] - Телефон отправителя (НП),
col[36] - Дата платного хранения (НП)
col[37] - Рез. суммы по заказу (Розетка)
Дополнительные колонки начинаются с номера 41:
col[41] - Дополнительная колонка 1
col[42] - Дополнительная колонка 2
col[43] - Дополнительная колонка 3
col[44] - Дополнительная колонка 4
col[45] - Дополнительная колонка 5
col[46] - Дополнительная колонка 6
col[47] - Дополнительная колонка 7
col[48] - Дополнительная колонка 8
col[49] - Дополнительная колонка 9
col[50] - Дополнительная колонка 10
col[51] - Дополнительная колонка 11
col[52] - Дополнительная колонка 12
col[53] - Дополнительная колонка 13
col[54] - Дополнительная колонка 14
col[55] - Дополнительная колонка 15
col[56] - Дополнительная колонка 16
col[57] - Дополнительная колонка 17
col[58] - Дополнительная колонка 18
col[59] - Дополнительная колонка 19
col[60] - Дополнительная колонка 20