Описание скрипта на примере формы, отвечающей за рассылку допусков к курсам.
Можно использовать и для других задач.
Форма привязана к
таблице ее нужно прикручивать только там где проходит оплата.
Суть скрипта - рассылка различных писем в зависимости от переменного параметра (product).
Если клиент покупает продукт с определенной ценой, то скрипт отправляет ему письмо из нужной ячейки (см скрин справа).
Скрипт проверяет значение в ячейке столбца F (product) и отправляет связанное с этим значением содержимое ячейки с письмом (у нас ячейки с письмами O2, S2, P2)
Порядок действий аналогичен изложенному выше скрипту:
В гугл таблице нажать на кнопку "Инструменты", затем выбрать вариант
"<> редактор скриптов",
откроется новая страница, см рисунок.
1 - скопировать код "Код" в нашу новую таблицу,
2 - скопировать код "2 страница" в нашу новую таблицу,
3 - применить сохранение перенесенных кодов,
4 - в настройках скриптов указать, как часто скрипт должен запускаться сам, там выбираешь нужный интервал, например 1 минута и нужную функцию (sendMail),
5 - чтобы все работало автоматически, надо зайти в редактор скриптов и запустить вручную эту функцию, тогда гугл спросит разрешение отправлять письма от твоего имени, надо разрешить.
При необходимости меняем стоимость продукта, добавляем новые ячейки с письмами, связываем их с ценами в скрипте в пары.
ВАЖНО: при настройке скрипта нужно находиться в том аккаунте, откуда будет рассылка писем.
ВАЖНО: не оставлять пустыми ключевые ячейки, тк скрипт не идет ниже пустой ячейки, останавливается.
Коды для двух скриптов можно скопировать ниже.Скрипт Кодfunction sendMail() {
var message = valSheet(list,"O2");
for (var i = 2; i <= u_rows; i++)
{
if(valSheet(list,"N"+i) != 'Да')
{
var emailAddress = valSheet(list,"B"+i);
var product = valSheet(list,"F"+i);
// Для товара 1
if(product == '12000') {
message = valSheet(list,"O2");
}
if(product == '6000') {
message = valSheet(list,"O2");
}
if(product == '8001') {
message = valSheet(list,"O2");
}
if(product == '3999') {
message = valSheet(list,"S2");
}
if(product == '10800') {
message = valSheet(list,"O2");
}
if(product == '10200') {
message = valSheet(list,"O2");
}
if(product == '9600') {
message = valSheet(list,"O2");
}
if(product == '60000') {
message = valSheet(list,"R2");
}
if(product == '30000') {
message = valSheet(list,"R2");
}
if(product == '500') {
message = valSheet(list,"T2");
}
if(product == '11999') {
message = valSheet(list,"P2");
}
MailApp.sendEmail(emailAddress, "Зарабатывай на знании принципов поведения клиентов", message);
virtTextSheet(list,"N"+i,'Да');
commitSheet(list);
}
}
}
Скрипт 2 страница
var ss = SpreadsheetApp.getActiveSpreadsheet();
var list = ss.getSheetByName('LeadsFromTilda');
u_selection=list.getDataRange();
u_columns=u_selection.getNumColumns();
u_rows=u_selection.getNumRows();
var virtual = {};
virtual[list] = {};
var virtual_backup = {};
virtual_backup[list] = {};
virtual_default = virtual;
//var virtual = {users:{},bc:{},oc:{},inbox:{},history:{},operacionka:{},inout:{}};
putCache('virtual',virtual);
//var virtual_backup = {users:{},bc:{},oc:{},inbox:{},history:{},operacionka:{},inout:{}};
putCache('virtual_backup',virtual_backup);
// menu = [{name: "Остановить обновление", functionName: "Stop"},null,{name: "Ввод", functionName: "In"},{name: "Вывод", functionName: "Out"},{name: "Реинвест", functionName: "Reinvest"},{name: "Новый Участник", functionName: "AddUser"},null,{name: "Откатить последнее действие", functionName: "RollBack"},null,{name: "Синхронизировать личный кабинет", functionName: "sendAll"}];
menu = [];
function checkGlobalStop()
{
return parseInt(valSheet(operacionka,'C1'));
}
function getCache(key)
{
var cache = CacheService.getDocumentCache();
var value = JSON.parse(cache.get(key));
return value;
}
function putCache(key,value)
{
var cache = CacheService.getDocumentCache();
if (typeof(value) == "object")
value = JSON.stringify(value);
cache.put(key,value);
}
function virtSheet(sheet,idx,action,value)
{
var virtual = getCache("virtual");
var virtual_backup = getCache("virtual_backup");
if(action == 'plus')
{
if(!virtual[sheet][idx] && idx.charAt(1)!=0)
{
virtual[sheet][idx] = parseFloat(valSheet(sheet,idx));
virtual_backup[sheet][idx] = parseFloat(valSheet(sheet,idx));
}
virtual[sheet][idx]=parseFloat(virtual[sheet][idx])+parseFloat(value);
}
if(action == 'minus')
{
if(!virtual[sheet][idx] && idx.charAt(1)!=0)
{
virtual[sheet][idx] = parseFloat(valSheet(sheet,idx));
virtual_backup[sheet][idx] = parseFloat(valSheet(sheet,idx));
}
virtual[sheet][idx]=parseFloat(virtual[sheet][idx])-parseFloat(value);
}
if(action == 'set')
{
if(!virtual[sheet][idx] && idx.charAt(1)!=0)
{
virtual[sheet][idx] = parseFloat(valSheet(sheet,idx));
virtual_backup[sheet][idx] = parseFloat(valSheet(sheet,idx));
}
virtual[sheet][idx]=parseFloat(value);
}
putCache('virtual',virtual);
putCache('virtual_backup',virtual_backup);
return virtual[sheet][idx];
}
function virtTextSheet(sheet,idx,value)
{
var virtual = getCache("virtual");
var virtual_backup = getCache("virtual_backup");
Logger.log(JSON.stringify(virtual));
if(!virtual[sheet][idx] && idx.charAt(1)!=0)
virtual_backup[sheet][idx] = valSheet(sheet,idx);
virtual[sheet][idx]=value;
putCache('virtual',virtual);
putCache('virtual_backup',virtual_backup);
return virtual[sheet][idx];
}
function valSheet(sheet,idx)
{
return sheet.getRange(idx).getValues().toString();
}
function commitSheet(sheet)
{
var virtual = getCache("virtual");
Object.keys(virtual[sheet]).map(function(key, index) {
var value = virtual[sheet][key];
if(key.charAt(1)!=0)
sheet.getRange(key).setValue(value);
});
virtual[sheet] = {};
putCache('virtual',virtual);
}
function RollBack() {
var virtual_backup = getCache("virtual_backup");
Logger.log(JSON.stringify(virtual_backup));
Object.keys(virtual_backup).map(function(key, index) {
rollbackSheet(key);
});
}
function rollbackSheet(sheet)
{
var virtual_backup = getCache("virtual_backup");
Object.keys(virtual_backup[sheet]).map(function(key, index) {
var value = virtual_backup[sheet][key];
if(key.charAt(1)!=0)
sheet.getRange(key).setValue(value);
});
putCache('virtual_backup',virtual_default)
}