Добрый вечер! Помогите пожалуйста с написанием скрипта. Задача у него такая: раз в день проверять значения нескольких ячеек в гугл таблице и если какая то из них равна определенному значению , отсылать маил с этим значением на заданный адрес. Похожие скрипты в интернете есть, но весь вечер с ними провозился пытаясь переделать что бы именно по определенному значению в ячейках отсылался маил- не смог, опыта совсем нет. Скидывать сюда то, с чем боролся весь вечер смысла не увидел, исходная таблица тоже вроде как не особо нужна.
Раз в день проверять это я так понимаю триггером задается...?!
Добрый вечер! Помогите пожалуйста с написанием скрипта. Задача у него такая: раз в день проверять значения нескольких ячеек в гугл таблице и если какая то из них равна определенному значению , отсылать маил с этим значением на заданный адрес. Похожие скрипты в интернете есть, но весь вечер с ними провозился пытаясь переделать что бы именно по определенному значению в ячейках отсылался маил- не смог, опыта совсем нет. Скидывать сюда то, с чем боролся весь вечер смысла не увидел, исходная таблица тоже вроде как не особо нужна.
Раз в день проверять это я так понимаю триггером задается...?!milletist
doober, Попробовал ваш скрипт, немного изменил по десбя [vba]
Код
function mail() { var sh= SpreadsheetApp.getActive().getSheetByName('Лист1'); var text= sh.getRange('E1').getValue(); var t= sh.getRange('D1').getValue(); if(t=='почта'){ GmailApp.sendEmail('mail.ru', 'Тест письма', 'Следующие изменения: '+text); } };
[/vba] Пару нюансов: 1. Почему то не работает через onEdit; 2. Если привязать скрипт на триггер "Редактирование таблицы", при равных text - письмо отсылается только 1 раз, т.е. если в D1 значение не поменялось, письмо 2й раз не отправится при редактировании.
doober, Попробовал ваш скрипт, немного изменил по десбя [vba]
Код
function mail() { var sh= SpreadsheetApp.getActive().getSheetByName('Лист1'); var text= sh.getRange('E1').getValue(); var t= sh.getRange('D1').getValue(); if(t=='почта'){ GmailApp.sendEmail('mail.ru', 'Тест письма', 'Следующие изменения: '+text); } };
[/vba] Пару нюансов: 1. Почему то не работает через onEdit; 2. Если привязать скрипт на триггер "Редактирование таблицы", при равных text - письмо отсылается только 1 раз, т.е. если в D1 значение не поменялось, письмо 2й раз не отправится при редактировании.Kashimirush
Работа, работа, перейди на Федота...
Сообщение отредактировал Kashimirush - Среда, 19.02.2020, 14:15
И раз уж хозяин топика молчит, возьму наглость продолжить вопрос. Вот пример таблицы: жмоньк
Удалось, мне все таки разобраться с onEdit, получил такой скрипт:
[vba]
Код
// Функция onEdit является триггером, который срабатывает при завершении ввода данных в ячейку Таблицы пользователем function onEdit(e) { Logger.log(e); // Получаем диапазон ячеек, в которых произошли изменения var range = e.range; // Лист, на котором производились изменения var sheet = range.getSheet(); // Проверяем, нужный ли это нам лист Logger.log(sheet.getName()); if (sheet.getName() != 'Лист1') { return false; } // Проверяем стартовую позицию диапазона, нам нужно фиксировать изменения в столбце В, т.е. 2 колонка Logger.log(range.getColumn()); if (range.getColumn() != 2) { return false; } for (var i = 1; i <= range.getNumRows(); i++) { var cell = range.getCell( i, // номер строки 1 // номер колонки ); var sheet = e.source.getActiveSheet(); //получаем номер измененной строки var idRow = e.range.getRow(); //получаем текст из 4 колонки, на нужной строке var text = sheet.getRange(idRow, 4).getValue(); //тоже из 1 колонки var date = sheet.getRange(idRow, 1).getValue(); //отправляем письмо GmailApp.sendEmail('@mail.ru', 'Изменения в таблице ', 'Строка №'+idRow+', Дата: '+date+' '+text);
}
}
[/vba] Смотрим изменения в столбце B при изменении, отправляем письмо, с данными из столбцов A,B,D
Но вопросы остались, как я понял лимит бесплатного аккаунта 100 писем в день, верно? Если текст письма повторяется с предыдущим то письмо не отправляется, поэтому пришлось добавлять номер строки в текст письма, как то можно это обойти?
И раз уж хозяин топика молчит, возьму наглость продолжить вопрос. Вот пример таблицы: жмоньк
Удалось, мне все таки разобраться с onEdit, получил такой скрипт:
[vba]
Код
// Функция onEdit является триггером, который срабатывает при завершении ввода данных в ячейку Таблицы пользователем function onEdit(e) { Logger.log(e); // Получаем диапазон ячеек, в которых произошли изменения var range = e.range; // Лист, на котором производились изменения var sheet = range.getSheet(); // Проверяем, нужный ли это нам лист Logger.log(sheet.getName()); if (sheet.getName() != 'Лист1') { return false; } // Проверяем стартовую позицию диапазона, нам нужно фиксировать изменения в столбце В, т.е. 2 колонка Logger.log(range.getColumn()); if (range.getColumn() != 2) { return false; } for (var i = 1; i <= range.getNumRows(); i++) { var cell = range.getCell( i, // номер строки 1 // номер колонки ); var sheet = e.source.getActiveSheet(); //получаем номер измененной строки var idRow = e.range.getRow(); //получаем текст из 4 колонки, на нужной строке var text = sheet.getRange(idRow, 4).getValue(); //тоже из 1 колонки var date = sheet.getRange(idRow, 1).getValue(); //отправляем письмо GmailApp.sendEmail('@mail.ru', 'Изменения в таблице ', 'Строка №'+idRow+', Дата: '+date+' '+text);
}
}
[/vba] Смотрим изменения в столбце B при изменении, отправляем письмо, с данными из столбцов A,B,D
Но вопросы остались, как я понял лимит бесплатного аккаунта 100 писем в день, верно? Если текст письма повторяется с предыдущим то письмо не отправляется, поэтому пришлось добавлять номер строки в текст письма, как то можно это обойти?Kashimirush
Работа, работа, перейди на Федота...
Сообщение отредактировал Kashimirush - Четверг, 20.02.2020, 07:59