Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скрипт отправки СМС при смене статуса в таблице - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Скрипт отправки СМС при смене статуса в таблице (Формулы/Formulas)
Скрипт отправки СМС при смене статуса в таблице
mulka45 Дата: Вторник, 07.01.2020, 12:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте господа! Всех с рождеством!)) Помогите дилетанту решить задачу, сильно не пинайте)) С меня плюсик в карму))))

Есть скрипт

[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, при всех остальных статусах не реагируем.

помогите решить головоломку праздничную))))


Сообщение отредактировал Pelena - Среда, 08.01.2020, 18:29
 
Ответить
СообщениеЗдравствуйте господа! Всех с рождеством!)) Помогите дилетанту решить задачу, сильно не пинайте)) С меня плюсик в карму))))

Есть скрипт

[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, при всех остальных статусах не реагируем.

помогите решить головоломку праздничную))))

Автор - mulka45
Дата добавления - 07.01.2020 в 12:34
Gustav Дата: Среда, 08.01.2020, 18:13 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1756
Репутация: 704 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Насколько могу судить из прочитанного и пОнятого (но, возможно, понятого неправильно), нужно ифчиком обернуть вызов messBox(url) и в ифчике проверять статус текущей строки (из колонки "D" листа "подготовка данных") на равенство значению "D5".

А если серьезно, то как Вы себе представляете эффективную помощь по этому вопросу без предоставления таблицы-примера? Некоторые хоть картинки прилагают (правда, тогда и решение в виде картинки получают), но тут-то - совсем печалька...


Мой tip box - яд 41001663842605
 
Ответить
СообщениеНасколько могу судить из прочитанного и пОнятого (но, возможно, понятого неправильно), нужно ифчиком обернуть вызов messBox(url) и в ифчике проверять статус текущей строки (из колонки "D" листа "подготовка данных") на равенство значению "D5".

А если серьезно, то как Вы себе представляете эффективную помощь по этому вопросу без предоставления таблицы-примера? Некоторые хоть картинки прилагают (правда, тогда и решение в виде картинки получают), но тут-то - совсем печалька...

Автор - Gustav
Дата добавления - 08.01.2020 в 18:13
mulka45 Дата: Среда, 08.01.2020, 18:43 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
предоставления таблицы-примера


Простите, тупанул, не подумал что есть люди кто сможет помочь сразу на примере таблицы, вот:
https://docs.google.com/spreads....sharing
 
Ответить
Сообщение
предоставления таблицы-примера


Простите, тупанул, не подумал что есть люди кто сможет помочь сразу на примере таблицы, вот:
https://docs.google.com/spreads....sharing

Автор - mulka45
Дата добавления - 08.01.2020 в 18:43
Gustav Дата: Среда, 08.01.2020, 21:02 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1756
Репутация: 704 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
не подумал что есть люди кто сможет помочь сразу на примере
Скорее, наоборот - подумали, что есть люди кто сможет помочь БЕЗ примера.

А когда и как у вас вызывается SendTelegram() ? Я что-то не вижу для него ни кнопки, ни пункта меню... А триггеры ваши, если они есть, я видеть не могу. Так триггером? Не вручную же из Редактора запускаете? Как бизнес-процесс организован?


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
не подумал что есть люди кто сможет помочь сразу на примере
Скорее, наоборот - подумали, что есть люди кто сможет помочь БЕЗ примера.

А когда и как у вас вызывается SendTelegram() ? Я что-то не вижу для него ни кнопки, ни пункта меню... А триггеры ваши, если они есть, я видеть не могу. Так триггером? Не вручную же из Редактора запускаете? Как бизнес-процесс организован?

Автор - Gustav
Дата добавления - 08.01.2020 в 21:02
mulka45 Дата: Среда, 08.01.2020, 21:53 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Не вручную же из Редактора запускаете?


настроен триггер, срабатывание скрипта по редактированию.
тут нет триггеров, сделал просто копию рабочей таблицы.
 
Ответить
Сообщение
Не вручную же из Редактора запускаете?


настроен триггер, срабатывание скрипта по редактированию.
тут нет триггеров, сделал просто копию рабочей таблицы.

Автор - mulka45
Дата добавления - 08.01.2020 в 21:53
Gustav Дата: Среда, 08.01.2020, 23:34 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1756
Репутация: 704 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Если я всё правильно понял, то вот такую вставку в код скрипта можно добавить:
[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]


Мой tip box - яд 41001663842605
 
Ответить
СообщениеЕсли я всё правильно понял, то вот такую вставку в код скрипта можно добавить:
[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]

Автор - Gustav
Дата добавления - 08.01.2020 в 23:34
mulka45 Дата: Четверг, 09.01.2020, 01:20 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Если я всё правильно понял


не сработало. меняю статус, ничего не происходит, в старом коде что то нужно менять?
 
Ответить
Сообщение
Если я всё правильно понял


не сработало. меняю статус, ничего не происходит, в старом коде что то нужно менять?

Автор - mulka45
Дата добавления - 09.01.2020 в 01:20
Gustav Дата: Четверг, 09.01.2020, 01:38 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1756
Репутация: 704 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
в старом коде что то нужно менять?

Разумеется! Я-то не могу ничего настраивать в вашем файле, у меня ж "Только просмотр". Нужно вставить в SendTelegram() фрагмент, обозначенный метками "НОВЫЙ КОД". Место вставки - ориентируясь на знакомые уже существующие строки.

Если же это всё уже сделано и все равно не работает, то покажите параметры вашего триггера.


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
в старом коде что то нужно менять?

Разумеется! Я-то не могу ничего настраивать в вашем файле, у меня ж "Только просмотр". Нужно вставить в SendTelegram() фрагмент, обозначенный метками "НОВЫЙ КОД". Место вставки - ориентируясь на знакомые уже существующие строки.

Если же это всё уже сделано и все равно не работает, то покажите параметры вашего триггера.

Автор - Gustav
Дата добавления - 09.01.2020 в 01:38
mulka45 Дата: Четверг, 09.01.2020, 01:49 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
у меня ж "Только просмотр"


делал все как вы написали. не удалось. открыл для редактирования
 
Ответить
Сообщение
у меня ж "Только просмотр"


делал все как вы написали. не удалось. открыл для редактирования

Автор - mulka45
Дата добавления - 09.01.2020 в 01:49
Gustav Дата: Четверг, 09.01.2020, 02:16 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1756
Репутация: 704 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
открыл для редактирования

Ну, что могу сказать... Мой "новый код" работает. Можете в этом убедиться, изменив в любой строке статус на "доставлен" и заглянув в Редакторе скриптов в Журнал (по меню: Вид \ Журналы) - там будет номер телефона из колонки D в редактируемой строке.

Если же статус строки не "доставлен", то в Журнал выводится не номер курьера, а строка заголовка этой колонки "Номер тел курьера", что говорит о каком-то косяке в вашем старом коде. Сейчас попробую разобраться.

А Вы потестируйте, потестируйте и позаглядывайте в журнал. Боевую рассылку смс я пока закомментировал, бояться не надо.


Мой tip box - яд 41001663842605
 
Ответить
Сообщение
открыл для редактирования

Ну, что могу сказать... Мой "новый код" работает. Можете в этом убедиться, изменив в любой строке статус на "доставлен" и заглянув в Редакторе скриптов в Журнал (по меню: Вид \ Журналы) - там будет номер телефона из колонки D в редактируемой строке.

Если же статус строки не "доставлен", то в Журнал выводится не номер курьера, а строка заголовка этой колонки "Номер тел курьера", что говорит о каком-то косяке в вашем старом коде. Сейчас попробую разобраться.

А Вы потестируйте, потестируйте и позаглядывайте в журнал. Боевую рассылку смс я пока закомментировал, бояться не надо.

Автор - Gustav
Дата добавления - 09.01.2020 в 02:16
mulka45 Дата: Четверг, 09.01.2020, 02:20 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Ну, что могу сказать...


что бы было быстрее, ответил вам прямо в таблице в коммент))
 
Ответить
Сообщение
Ну, что могу сказать...


что бы было быстрее, ответил вам прямо в таблице в коммент))

Автор - mulka45
Дата добавления - 09.01.2020 в 02:20
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Скрипт отправки СМС при смене статуса в таблице (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2020 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!