Google Apps script (скрипты в google docs)

Рубрика: Фишки

Добрый день, встала необходимость сделать общую таблицу в google docs, в которой, заносится разного рода информация каждым пользователем по очереди, но как узнать что кто то сделал изменение и следующем приходится, постоянно смотреть, бы ли ли сделаны правки добавилось, что либо, на помощь пришел вот такой Google Apps script который позволяет отследить изменения или правки в таблице, и отсылает на почту сообщение с правкой, можно указать только один столбец в таблице для отслеживания изменений как у меня в скрипте:


function goEmail(){
var ss = SpreadsheetApp.getActiveSheet();
//узнаем редактируемую ячейку
var r = SpreadsheetApp.getActiveRange();
//узнаем номер колонки
var cols = r.getColumn();
var rows = r.getRow();

//если колонка №19 то записываем коммент
if(cols==19){
var sheet = SpreadsheetApp.getActiveSheet();
//№
var pole1 = ss.getRange(rows,3).getValue();
var pole2 = ss.getRange(rows,5).getValue();
var pole3 = ss.getRange(rows,7).getValue();
var pole4 = ss.getRange(rows,19).getValue();
var email = "123@mail.ru";
var subject = "MSG: N:" + pole1 + ", Место:" + pole2 + ", " + pole3 + ", Начало:" + pole4;
var message = "№ " + pole1 + ", Место: " + pole2 + ", м: " + pole3 + ", Начало работ: " + pole4;
MailApp.sendEmail(email,subject,message);
}
}

Вполне простая функция, но все дело в триггере который надо прописать для функции и настроить чтобы она срабатывала при правке файла, а именно после того как в столбце 19 произошло событие, отправляется письмо на почту.

еще вариант но тут записывается время правки ячейки в комментарий


function onEdit(event)
{
var ss = event.source.getActiveSheet();
//узнаем редактируемую ячейку
var r = event.source.getActiveRange();
//узнаем номер колонки
var cols = r.getColumn();
var rows = r.getRow();
//если колонка №3 то записываем коммент
if(cols==3){
//№
var pole1 = ss.getRange(rows,3).getValue();
var pole2 = ss.getRange(rows,5).getValue();

var subject = "MESGS: Начало работ";
var message = "№" + pole1 + ", Место:" + pole2 +".";
r.setComment("Послед. изменение: " + (new Date()) + " - " + pole1 + ", " + pole2);
}
//если надо удалить комменты то пишем
//r.clearComment();
}

 



Теги:


Поделись с друзьями:
Похожие статьи

комментариев 6

комментариев 6 для записи Google Apps script (скрипты в google docs)

  1. Игорь:

    Поясните пожалуйста в тексте первый вариант скрипта, что он конкретно делает (почему именно 4 поля).Не могу понять как сделать чтобыскрипт мониторил нужное количество столбцов (несколько десятков) и присылал отчет по всем ним.

    • bortvlad:

      Полей может быть сколько угодно, все дело в том что мы отслеживаем изменение в определенном столбце (№19), а не во всей таблице, и формируем письмо для отправления. Я в своем примере кроме изменяемой ячейки записываю в письмо соседние ячейки в этой же строке, по этому у меня их 4, можете их удалить вообще, а в теле письма отправлять сообщение, «произошли изменения в столбце №19» и все.

  2. Дмитрий:

    Можно ли сделать такое же уведомление только через смс сервис? Что бы приходило сообщение об изменении данных в определенной ячейке?

    • bortvlad:

      Дмитрий, можно сделать так, схема:
      Изменения приходят на почту -> СМС уведомление о письме.
      То есть вам надо для начала сделать чтобы приходили уведомления на почту, то есть это будет mail.ru, то у него есть услуга СМС оповещение о письме, только надо указать номер телефона в майле (правда не для всех операторов), иначе
      выбираете подходящего СМС оператора (как правило платно с абоненткой в месяц или за 1 смс) подключаете его к почте и он вас уже за деньги, будет оповещать, о том что пришло на почту.

  3. Ярослав:

    Можно ли сделать так, что бы вновь добавленная в одну таблицу информация, обновляла информацию в другой таблице. То есть, допустим есть у меня таблица и на листе «1» в столбце «А» 2437 заполненных ячеек, а на листе «2» в ячейке «А1» я вижу информацию из ячейки «А2437» листа «2», и тут, в лист «1» добавляется новая ячейка — «А2438» с новой информацией, а ячейка «А1» на листе «2» автоматически обновляется и теперь показывает информацию из ячейки «А2438» листа «1»

  4. autor:

    Уважаемый автор скрипта. Если Вы найдете время помогите пожалуйста его усовершенствовать для своих целей. Мне необходимо чтобы в отслеживаемой колонке значение менялось формулой. Дело простое, но скрипт на изменения внесенный формулой не реагирует, требует ручной редакции данной колонки.