Здравствуйте господа! Всех с рождеством!)) Помогите дилетанту решить задачу, сильно не пинайте)) С меня плюсик в карму))))
Есть скрипт
[vba]
Код
function SendTelegram() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var activeCell = ss.getActiveSheet().getActiveCell(); var sheet = ss.getSheetByName("подстановка данных"); var renge = sheet.getRange("F:F").getValues(); var rowNum = activeCell.getRow(); var lastRowInCol = renge.filter(String).length; var namesKuriers = sheet.getRange(2, 6, lastRowInCol - 1, 1).getValues(); var namesKurier = activeCell.getValue(); var namesKuriersArr = namesKuriers.map(function(row){return row[0]}); var rowKurier = namesKuriersArr.indexOf(namesKurier) + 2;
var chatID = sheet.getRange(rowKurier, 7).getValue();
var orderDate = ss.getActiveSheet().getRange(rowNum, 2).getValue(); var orderAdress = ss.getActiveSheet().getRange(rowNum, 3).getValue();
var tokken = "***";
var text = encodeURIComponent("текст: " + orderDate + ".");
var url = "https://sms.ru/sms/send?api_id==" + chatID + "&msg=" + text
messBox(url)
}
function messBox(url) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ui = SpreadsheetApp.getUi();
var columKurier = ss.getActiveSheet().getActiveCell().getColumn(); var rowKurier = ss.getActiveSheet().getActiveCell().getRow();
if(columKurier == 8 && rowKurier > 2){ var response = ui.alert("Информировать курьера о новой доставке отправив СМС с датой и временем заказа?", ui.ButtonSet.YES_NO) if (response == ui.Button.YES) { var openUrl = UrlFetchApp.fetch(url).getContentText(); } }
}
[/vba]
он позволяет при выборе определенного курьера, отправить ему смс (новый заказ). Хочется переделать данный скрипт, что бы смс отправлялось не курьеру, а заказчику, когда выбирается один из статусов.
Первый лист "текущие заказы" Статусы заказов в колонке "A", номера телефонов заказчика в колонке "D"
статусы берутся проверкой данных из листа "подстановка данных" хранятся в колонке "D" выводить пуш уведомление нужно если выбран статус "доставлено" = D5, при всех остальных статусах не реагируем.
помогите решить головоломку праздничную))))
Здравствуйте господа! Всех с рождеством!)) Помогите дилетанту решить задачу, сильно не пинайте)) С меня плюсик в карму))))
Есть скрипт
[vba]
Код
function SendTelegram() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var activeCell = ss.getActiveSheet().getActiveCell(); var sheet = ss.getSheetByName("подстановка данных"); var renge = sheet.getRange("F:F").getValues(); var rowNum = activeCell.getRow(); var lastRowInCol = renge.filter(String).length; var namesKuriers = sheet.getRange(2, 6, lastRowInCol - 1, 1).getValues(); var namesKurier = activeCell.getValue(); var namesKuriersArr = namesKuriers.map(function(row){return row[0]}); var rowKurier = namesKuriersArr.indexOf(namesKurier) + 2;
var chatID = sheet.getRange(rowKurier, 7).getValue();
var orderDate = ss.getActiveSheet().getRange(rowNum, 2).getValue(); var orderAdress = ss.getActiveSheet().getRange(rowNum, 3).getValue();
var tokken = "***";
var text = encodeURIComponent("текст: " + orderDate + ".");
var url = "https://sms.ru/sms/send?api_id==" + chatID + "&msg=" + text
messBox(url)
}
function messBox(url) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ui = SpreadsheetApp.getUi();
var columKurier = ss.getActiveSheet().getActiveCell().getColumn(); var rowKurier = ss.getActiveSheet().getActiveCell().getRow();
if(columKurier == 8 && rowKurier > 2){ var response = ui.alert("Информировать курьера о новой доставке отправив СМС с датой и временем заказа?", ui.ButtonSet.YES_NO) if (response == ui.Button.YES) { var openUrl = UrlFetchApp.fetch(url).getContentText(); } }
}
[/vba]
он позволяет при выборе определенного курьера, отправить ему смс (новый заказ). Хочется переделать данный скрипт, что бы смс отправлялось не курьеру, а заказчику, когда выбирается один из статусов.
Первый лист "текущие заказы" Статусы заказов в колонке "A", номера телефонов заказчика в колонке "D"
статусы берутся проверкой данных из листа "подстановка данных" хранятся в колонке "D" выводить пуш уведомление нужно если выбран статус "доставлено" = D5, при всех остальных статусах не реагируем.
Насколько могу судить из прочитанного и пОнятого (но, возможно, понятого неправильно), нужно ифчиком обернуть вызов messBox(url) и в ифчике проверять статус текущей строки (из колонки "D" листа "подготовка данных") на равенство значению "D5".
А если серьезно, то как Вы себе представляете эффективную помощь по этому вопросу без предоставления таблицы-примера? Некоторые хоть картинки прилагают (правда, тогда и решение в виде картинки получают), но тут-то - совсем печалька...
Насколько могу судить из прочитанного и пОнятого (но, возможно, понятого неправильно), нужно ифчиком обернуть вызов messBox(url) и в ифчике проверять статус текущей строки (из колонки "D" листа "подготовка данных") на равенство значению "D5".
А если серьезно, то как Вы себе представляете эффективную помощь по этому вопросу без предоставления таблицы-примера? Некоторые хоть картинки прилагают (правда, тогда и решение в виде картинки получают), но тут-то - совсем печалька...Gustav
не подумал что есть люди кто сможет помочь сразу на примере
Скорее, наоборот - подумали, что есть люди кто сможет помочь БЕЗ примера.
А когда и как у вас вызывается SendTelegram() ? Я что-то не вижу для него ни кнопки, ни пункта меню... А триггеры ваши, если они есть, я видеть не могу. Так триггером? Не вручную же из Редактора запускаете? Как бизнес-процесс организован?
не подумал что есть люди кто сможет помочь сразу на примере
Скорее, наоборот - подумали, что есть люди кто сможет помочь БЕЗ примера.
А когда и как у вас вызывается SendTelegram() ? Я что-то не вижу для него ни кнопки, ни пункта меню... А триггеры ваши, если они есть, я видеть не могу. Так триггером? Не вручную же из Редактора запускаете? Как бизнес-процесс организован?Gustav
Если я всё правильно понял, то вот такую вставку в код скрипта можно добавить: [vba]
Код
function SendTelegram() { ........................................................ ........................................................ var rowKurier = namesKuriersArr.indexOf(namesKurier) + 2; //определяем ячейку с менеджером
var chatID = sheet.getRange(rowKurier, 7).getValue(); //чат айди или номер тел в какой колонке // НОВЫЙ КОД -----> if (ss.getActiveSheet().getRange("A"+rowNum).getValue() == "доставлен") { chatID = ss.getActiveSheet().getRange("D"+rowNum).getValue(); } // <----- НОВЫЙ КОД
//формируем сообщение в чат var orderDate = ss.getActiveSheet().getRange(rowNum, 2).getValue(); var orderAdress = ss.getActiveSheet().getRange(rowNum, 3).getValue(); ........................................................ ........................................................ }
[/vba]
Если я всё правильно понял, то вот такую вставку в код скрипта можно добавить: [vba]
Код
function SendTelegram() { ........................................................ ........................................................ var rowKurier = namesKuriersArr.indexOf(namesKurier) + 2; //определяем ячейку с менеджером
var chatID = sheet.getRange(rowKurier, 7).getValue(); //чат айди или номер тел в какой колонке // НОВЫЙ КОД -----> if (ss.getActiveSheet().getRange("A"+rowNum).getValue() == "доставлен") { chatID = ss.getActiveSheet().getRange("D"+rowNum).getValue(); } // <----- НОВЫЙ КОД
//формируем сообщение в чат var orderDate = ss.getActiveSheet().getRange(rowNum, 2).getValue(); var orderAdress = ss.getActiveSheet().getRange(rowNum, 3).getValue(); ........................................................ ........................................................ }
Разумеется! Я-то не могу ничего настраивать в вашем файле, у меня ж "Только просмотр". Нужно вставить в SendTelegram() фрагмент, обозначенный метками "НОВЫЙ КОД". Место вставки - ориентируясь на знакомые уже существующие строки.
Если же это всё уже сделано и все равно не работает, то покажите параметры вашего триггера.
Разумеется! Я-то не могу ничего настраивать в вашем файле, у меня ж "Только просмотр". Нужно вставить в SendTelegram() фрагмент, обозначенный метками "НОВЫЙ КОД". Место вставки - ориентируясь на знакомые уже существующие строки.
Если же это всё уже сделано и все равно не работает, то покажите параметры вашего триггера.Gustav
Ну, что могу сказать... Мой "новый код" работает. Можете в этом убедиться, изменив в любой строке статус на "доставлен" и заглянув в Редакторе скриптов в Журнал (по меню: Вид \ Журналы) - там будет номер телефона из колонки D в редактируемой строке.
Если же статус строки не "доставлен", то в Журнал выводится не номер курьера, а строка заголовка этой колонки "Номер тел курьера", что говорит о каком-то косяке в вашем старом коде. Сейчас попробую разобраться.
А Вы потестируйте, потестируйте и позаглядывайте в журнал. Боевую рассылку смс я пока закомментировал, бояться не надо.
Ну, что могу сказать... Мой "новый код" работает. Можете в этом убедиться, изменив в любой строке статус на "доставлен" и заглянув в Редакторе скриптов в Журнал (по меню: Вид \ Журналы) - там будет номер телефона из колонки D в редактируемой строке.
Если же статус строки не "доставлен", то в Журнал выводится не номер курьера, а строка заголовка этой колонки "Номер тел курьера", что говорит о каком-то косяке в вашем старом коде. Сейчас попробую разобраться.
А Вы потестируйте, потестируйте и позаглядывайте в журнал. Боевую рассылку смс я пока закомментировал, бояться не надо.Gustav