Есть простейшая связка GAS + Telegram которая осуществляет простые уведомления в группу, когда определенный столбец и определенное кол-во строк заполняются "
1".
таблица состоит из секций подобного вида:
Все работает, и уведомления прекрасно отправляются.
Но в ходе работы замечен неприятный баг. Когда пользователь заполняет столбец единицами, производя переход между строками с помощью "
стрелки вниз". Заполнив последнюю строку и быстро нажав вниз один или несколько раз. В телеграм отправляется от двух, до нескольких(
к примеру на представленном изображении 7 строк параметров, т.е. кол-во сообщений может варьироваться от 1-2 до 7) сообщений с одним и тем же текстом. Я понимаю, что проблема, где-то в коде отправки, возможно не хватает какой-нибудь проверки, но не понимаю, как этого можно избежать?
Функция триггер:
function onEdit(e){
var row = e.range.getRow();//получаем строку события
var col = e.range.getColumn();//получаем колонку события
var val = Number(e.range.getValues());//получаем число ввода
var shifr = SS.getRange(2, col-1).getValue();
if(val == 1){
var listName = SS.getName();//получаем название листа
var preSum = SS.getRange(3, col).getValue();//получаем число суммы
var delta = Number(preSum) / Number(shifr);//расчитываем дельту
if(delta == 1){
var setParametr = SS.getRange(3,col-1).getValue();
var sendText = setParametr + " ( "+listName+" ). Параметр активен\n ";
sendMessage(chatId,sendText);
}
}
}
Отправка сообщения:
function sendMessage(chatId, sendText){
let payload = {
method: 'sendMessage',
chat_id: String(chatId),
text: sendText,
parse_mode: 'HTML'
},
data = {
method: 'post',
payload: payload
};
UrlFetchApp.fetch(telegramUrl + '/', data);
}
Функция веб-хука:
function setWebhook(){
var url = telegramUrl + "/setWebhook?url=" + webAppUrl + "&drop_pending_updates=true";
//https://api.telegram.org/bot<bot_token>/setWebhook?url=<webhook_url>&drop_pending_updates=true
var response = UrlFetchApp.fetch(url);
}