Добрый вечер! Помогите пожалуйста с написанием скрипта. Задача у него такая: раз в день проверять значения нескольких ячеек в гугл таблице и если какая то из них равна определенному значению , отсылать маил с этим значением на заданный адрес. Похожие скрипты в интернете есть, но весь вечер с ними провозился пытаясь переделать что бы именно по определенному значению в ячейках отсылался маил- не смог, опыта совсем нет. Скидывать сюда то, с чем боролся весь вечер смысла не увидел, исходная таблица тоже вроде как не особо нужна.
Раз в день проверять это я так понимаю триггером задается...?!
Добрый вечер! Помогите пожалуйста с написанием скрипта. Задача у него такая: раз в день проверять значения нескольких ячеек в гугл таблице и если какая то из них равна определенному значению , отсылать маил с этим значением на заданный адрес. Похожие скрипты в интернете есть, но весь вечер с ними провозился пытаясь переделать что бы именно по определенному значению в ячейках отсылался маил- не смог, опыта совсем нет. Скидывать сюда то, с чем боролся весь вечер смысла не увидел, исходная таблица тоже вроде как не особо нужна.
Раз в день проверять это я так понимаю триггером задается...?!milletist
doober, Попробовал ваш скрипт, немного изменил по десбя
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);
}
};
Пару нюансов: 1. Почему то не работает через onEdit; 2. Если привязать скрипт на триггер "Редактирование таблицы", при равных text - письмо отсылается только 1 раз, т.е. если в D1 значение не поменялось, письмо 2й раз не отправится при редактировании.
doober, Попробовал ваш скрипт, немного изменил по десбя
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);
}
};
Пару нюансов: 1. Почему то не работает через onEdit; 2. Если привязать скрипт на триггер "Редактирование таблицы", при равных text - письмо отсылается только 1 раз, т.е. если в D1 значение не поменялось, письмо 2й раз не отправится при редактировании.Kashimirush
Работа, работа, перейди на Федота...
Сообщение отредактировал Kashimirush - Среда, 19.02.2020, 14:15
И раз уж хозяин топика молчит, возьму наглость продолжить вопрос. Вот пример таблицы: жмоньк
Удалось, мне все таки разобраться с onEdit, получил такой скрипт:
// Функция 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);
}
}
Смотрим изменения в столбце B при изменении, отправляем письмо, с данными из столбцов A,B,D
Но вопросы остались, как я понял лимит бесплатного аккаунта 100 писем в день, верно? Если текст письма повторяется с предыдущим то письмо не отправляется, поэтому пришлось добавлять номер строки в текст письма, как то можно это обойти?
И раз уж хозяин топика молчит, возьму наглость продолжить вопрос. Вот пример таблицы: жмоньк
Удалось, мне все таки разобраться с onEdit, получил такой скрипт:
// Функция 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);
}
}
Смотрим изменения в столбце B при изменении, отправляем письмо, с данными из столбцов A,B,D
Но вопросы остались, как я понял лимит бесплатного аккаунта 100 писем в день, верно? Если текст письма повторяется с предыдущим то письмо не отправляется, поэтому пришлось добавлять номер строки в текст письма, как то можно это обойти?Kashimirush
Работа, работа, перейди на Федота...
Сообщение отредактировал Kashimirush - Четверг, 20.02.2020, 07:59