06.10.2016

Синхронизация заказов с личного сайта

Если у Вас есть личный сайт, и Вы имеете к нему доступ (можете вносить изменения в PHP  файлы), после несложной настройки, Вы сможете автоматически получать заказы в таблицу. Для этого проделайте такие настройки:

Находясь в таблице скопируйте этот «ключ»

ключ таблицы

Затем зайдите в «Инструменты»- «Редактор скриптов»редактор скриптов

Откроется новая вкладка в браузере, удалите имеющийся там текст:скрипт

Вместо удаленного текста впишите этот код:

Подробнее >>>

function doGet(e){Get_Post(e);}function doPost(e){Get_Post(e);}
function Get_Post(e) {
 var ss = SpreadsheetApp.openById("1aZL58RZJzL7J09YsQXHRojpF_XI6N2m7zyyoEJq6"); // меняем на свой ID таблицы
 var arr = JSON.parse(Utilities.newBlob(Utilities.base64Decode(ss.getRange("Admin!Z1").getValue())).getDataAsString());
 var col = arr.abc;
var delta = arr.delta?true:false;
 var t = 10;
 ss = ss.getSheetByName(arr.lists.tl);
 var last = ss.getLastRow()+1;
 if(col[0]) ss.getRange(col[0]+last).setValue(new Date());
 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);

// В случае если у Вас на сайте название городов и складов точно такие как они описаны в Новой почты, можно сделать синхронизацию отдельно города и склада:
 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 (W && e.parameter.sklad) {
  VW = ss.getRange('Admin!'+W);
  W = VW.getValues();
  for (i = 0; i < W.length; i++)
   if (W[i][0].replace(/\"/g,'').search(e.parameter.sklad.replace(/\(/g,'\\(').replace(/\)/g,'\\)')) > 0) {
    e.parameter.sklad = W[i][0];
    t=7;
    break;
  }
 ss.getRange(col[7]+last).setDataValidation(SpreadsheetApp.newDataValidation().requireValueInRange(VW,delta).build());
 }
 if(t==7 && col[7] && e.parameter.sklad) ss.getRange(col[t]+last).setValue(e.parameter.sklad);

 if(col[4] && e.parameter.tovar) ss.getRange(col[4]+last).setValue(e.parameter.tovar.replace(/\n/gi,'\n'));
 if(col[5] && e.parameter.price) ss.getRange(col[5]+last).setValue(e.parameter.price);
 if(col[3] && e.parameter.phone) ss.getRange(col[3]+last).setValue(e.parameter.phone.replace(/[^\d]/gi,'').substr(-10));
 if(col[18] && e.parameter.email) ss.getRange(col[18]+last).setValue(e.parameter.email);
ss.getRange(last+':'+last).setBackground('yellow');// Желтый фон строки
}

 
Обязательно поменяйте в коде ID таблицы на ранее скопированный свой ID
 
вставить ид
 
Сохраните проект, можете ввести любое название проекта, или оставить по умолчанию «Проект без названия»
 
проект без названия
 
 Далее нажмите «Публикация» — «Развернуть как вэб-приложение».  Укажите данные как на скриншоте:clip2net_161006130050
 
 Нажмите «Развернуть», предоставьте разрешение на выполнение кодаclip2net_161006130344
clip2net_161006130457
 
Скопируйте эту ссылку:ссылка
 Ссылка должны иметь вид:
https://script.google.com/macros/s/AKfycbwhiG9zlNgI-NGSjodM3ISSlWIQwOVwko0Amn9syCqheoV5lns/exec
Теперь к этой ссылке надо добавить те данные которые присутствуют на Вашем сайте и будут добавлены в таблицу:
 
name — ФИО,
address — адрес пропишется в ячейку «Коментарий»,
tovar — товар в заказе,
price — общая сумма за заказ,
phone — тел. преобразуется в необходимый формат для таблицы,
email — почта клиента, если Вы используете эту колонку,
gorod — город клиента (если есть на сайте выбор города),
sklad — номер отделения Новой Почты (если есть на сайте такой выбор).
 
В итоге полная ссылка будет выглядеть (Ваша ссылка, знак вопроса, перечисленные данные для заказа через символ «&» )

https://script.google.com/macros/s/AKfycbwhiG9zlNgI-NGSjodM3ISSlWIQwOVwko0Amn9syCqheoV5lns/exec?name=$name&address=$adr&tovar=$tovar&phone=$tel

 
Где $name, $adr, $tovar, $tel — это те переменные которые присутствуют на Вашем сайте, и содержат данные о заказе.
Эти переменные могут отличаться и быть другими от написанных выше. Если Вы их не знаете то обратитесь к программисту который настраивал, устанавливал Ваш сайт.
Вставив данную строчку в браузерную строку, Вы должны получить ответ:clip2net_161006135625
Если Вы видите другой текст, обратитесь по удобным Вам контактам, опишите ошибку и мы поможем Вам настроить этот скрипт.
 
ВНИМАНИЕ! Для успешного выполнения данного кода, обязательно надо выбрать текущий активный лист, в него будут прописываться новые заказы.
 
Если у Вас всё получилось, теперь надо внести изменения на Вашем сайте. Необходимо найти ту часть кода, на Вашем сайте, которая отвечает за отправку данных о заказе в Базу Данных, или на почту. Файл обычно должен иметь расширение PHP. Текстовые переменные желательно вложить в функцию urlencode(), для правильного отображения русских символов. И сформировать строку, Ваши переменные надо записать в строку через точку.
А саму ссылку необходимо поместить в функцию: file_get_contents(), должно получиться подобно такой строки:

file_get_contents(‘https://script.google.com/macros/s/AKfycbwJPs-GXIX7hIVtlYunpf_1vzuJeK-555iKeY3JVr0Hwm_2g/exec?name=’.urlencode($name).’&address=’.urlencode($adr).’&tovar=’.urlencode($tovar).’&phone=’.$tel); 

 
Когда клиент оформит заказ, должна сработать эта функция, которая отправит все данные в таблицу.
 
Можно добавить свою переменную для любой колонки. Так Вы можете передать любые данные с сайта в любую колонку в Таблице. Для этого вставьте в скрипт Вашей Таблицы, такой код:
 
if(col[«номер колонки»] && e.parameter.переменная)
  ss.getRange(col[«номер колонки»]+last).setValue(e.parameter.переменная);
 
Полный перечень колонок и их идентификация:

Подробнее >>>

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] - Карта для выплат наложки. Только для новой Почты.

Дополнительные колонки начинаются с номера 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