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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Скрипт для отправки маила (Скрипты)
Скрипт для отправки маила
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
Группа: Друзья
Ранг: Ветеран
Сообщений: 613
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
смысла не увидел

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




Сообщение отредактировал doober - Среда, 12.02.2020, 20:14
 
Ответить
Сообщение
смысла не увидел

Действительно зачем.[vba]
Код
function sendEmail(){
var sh= SpreadsheetApp.openById('Здесь ид таблицы').getSheetByName('Лист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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 109
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
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 - Среда, 19.02.2020, 14:15
 
Ответить
Сообщение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
Дата добавления - 19.02.2020 в 12:40
Kashimirush Дата: Четверг, 20.02.2020, 07:39 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 109
Репутация: 6 ±
Замечаний: 0% ±

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


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

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

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

Удалось, мне все таки разобраться с 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 - Четверг, 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.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
Дата добавления - 20.02.2020 в 07:55
Kashimirush Дата: Вторник, 25.02.2020, 08:39 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 109
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Удалось, мне все таки разобраться с 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)


Работа, работа, перейди на Федота...
 
Ответить
Сообщение
Удалось, мне все таки разобраться с 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
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Скрипт для отправки маила (Скрипты)
  • Страница 1 из 1
  • 1
Поиск:

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