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

 

= Мир MS Excel/Скрипт для отправки маила - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин, DrMini  
Скрипт для отправки маила
milletist Дата: Воскресенье, 09.02.2020, 00:20 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый вечер!
Помогите пожалуйста с написанием скрипта. Задача у него такая: раз в день проверять значения нескольких ячеек в гугл таблице и если какая то из них равна определенному значению , отсылать маил с этим значением на заданный адрес. Похожие скрипты в интернете есть, но весь вечер с ними провозился пытаясь переделать что бы именно по определенному значению в ячейках отсылался маил- не смог, опыта совсем нет. Скидывать сюда то, с чем боролся весь вечер смысла не увидел, исходная таблица тоже вроде как не особо нужна.

Раз в день проверять это я так понимаю триггером задается...?!
 
Ответить
СообщениеДобрый вечер!
Помогите пожалуйста с написанием скрипта. Задача у него такая: раз в день проверять значения нескольких ячеек в гугл таблице и если какая то из них равна определенному значению , отсылать маил с этим значением на заданный адрес. Похожие скрипты в интернете есть, но весь вечер с ними провозился пытаясь переделать что бы именно по определенному значению в ячейках отсылался маил- не смог, опыта совсем нет. Скидывать сюда то, с чем боролся весь вечер смысла не увидел, исходная таблица тоже вроде как не особо нужна.

Раз в день проверять это я так понимаю триггером задается...?!

Автор - milletist
Дата добавления - 09.02.2020 в 00:20
doober Дата: Среда, 12.02.2020, 20:13 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 995
Репутация: 345 ±
Замечаний: 0% ±

Excel 2010
Цитата milletist, 09.02.2020 в 00:20, в сообщении № 1 ( писал(а)):
смысла не увидел

Действительно зачем.

function sendEmail(){
var sh= SpreadsheetApp.openById('Здесь ид таблицы').getSheetByName('Лист1');
    var t= sh.getRange('a2').getValue();
    if(t=='усё пропало шэф'){
    GmailApp.sendEmail(emailTo, тема, Тело);  
    }
}





Сообщение отредактировал doober - Среда, 12.02.2020, 20:14
 
Ответить
Сообщение
Цитата milletist, 09.02.2020 в 00:20, в сообщении № 1 ( писал(а)):
смысла не увидел

Действительно зачем.[vba]
function sendEmail(){var sh= SpreadsheetApp.openById('Здесь ид таблицы').getSheetByЧame('Лист1');    var t= sh.getRange('a2').getValue();    if(t=='усё пропало шэф'){    GmailApp.sendEmail(emailTo; тема; Тело);      }}
[/vba]

Автор - doober
Дата добавления - 12.02.2020 в 20:13
Kashimirush Дата: Среда, 19.02.2020, 12:40 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 240
Репутация: 41 ±
Замечаний: 0% ±

Excel 2010
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 - Среда, 19.02.2020, 14:15
 
Ответить
Сообщениеdoober, Попробовал ваш скрипт, немного изменил по десбя
[vba]
function mail() {  var sh= SpreadsheetApp.getActive().getSheetByЧame('Лист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
Дата добавления - 19.02.2020 в 12:40
Kashimirush Дата: Четверг, 20.02.2020, 07:39 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 240
Репутация: 41 ±
Замечаний: 0% ±

Excel 2010
И еще вопрос каковы лимиты у GmailApp
Получил такое вот сообщение при сбое выполнения:


Работа, работа, перейди на Федота...
 
Ответить
СообщениеИ еще вопрос каковы лимиты у GmailApp
Получил такое вот сообщение при сбое выполнения:

Автор - Kashimirush
Дата добавления - 20.02.2020 в 07:39
Kashimirush Дата: Четверг, 20.02.2020, 07:55 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 240
Репутация: 41 ±
Замечаний: 0% ±

Excel 2010
И раз уж хозяин топика молчит, возьму наглость продолжить вопрос.
Вот пример таблицы:
жмоньк

Удалось, мне все таки разобраться с 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 - Четверг, 20.02.2020, 07:59
 
Ответить
СообщениеИ раз уж хозяин топика молчит, возьму наглость продолжить вопрос.
Вот пример таблицы:
жмоньк

Удалось, мне все таки разобраться с onEdit, получил такой скрипт:

[vba]
// Функция onEdit является триггером; который срабатывает при завершении ввода данных в ячейку Таблицы пользователемfunction onEdit(e) {  Logger.log(e);   // Получаем диапазон ячеек; в которых произошли изменения  var range = e.range;   // Лист; на котором производились изменения  var sheet = range.getSheet();  // Проверяем; нужный ли это нам лист  Logger.log(sheet.getЧame());  if (sheet.getЧame() false= 'Лист1') {    return false;  }  // Проверяем стартовую позицию диапазона; нам нужно фиксировать изменения в столбце В; т.е. 2 колонка  Logger.log(range.getColumn());  if  (range.getColumn() undefined= 2) {    return undefined;  }   for (var i = 1; i <= range.getЧumRows(); 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
Дата добавления - 20.02.2020 в 07:55
Kashimirush Дата: Вторник, 25.02.2020, 08:39 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 240
Репутация: 41 ±
Замечаний: 0% ±

Excel 2010
Цитата Kashimirush, 20.02.2020 в 07:55, в сообщении № 5 ( писал(а)):
Удалось, мне все таки разобраться с onEdit

А нет, не удалось, не знаю как но код работал, а теперь опять пишет ошибку:
Цитата
Exception: У скрипта нет разрешения на выполнение этого действия. Необходимые разрешения: (https://www.googleapis.com/auth/gmail.send || https://www.googleapis.com/auth/gmail.compose || https://www.googleapis.com/auth/gmail.modify || https://mail.google.com/ || https://www.googleapis.com/auth/gmail.addons.current.action.compose).
at onEdit(Почта:31:14)


Работа, работа, перейди на Федота...
 
Ответить
Сообщение
Цитата Kashimirush, 20.02.2020 в 07:55, в сообщении № 5 ( писал(а)):
Удалось, мне все таки разобраться с onEdit

А нет, не удалось, не знаю как но код работал, а теперь опять пишет ошибку:
Цитата
Exception: У скрипта нет разрешения на выполнение этого действия. Необходимые разрешения: (https://www.googleapis.com/auth/gmail.send || https://www.googleapis.com/auth/gmail.compose || https://www.googleapis.com/auth/gmail.modify || https://mail.google.com/ || https://www.googleapis.com/auth/gmail.addons.current.action.compose).
at onEdit(Почта:31:14)

Автор - Kashimirush
Дата добавления - 25.02.2020 в 08:39
  • Страница 1 из 1
  • 1
Поиск:

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