Пишем свой скрипт для Google Таблиц

Гугл таблицы — это очень мощный инструмент, но большинство людей его используют лишь просто как просмотрщик exel документов у себя в почте gmail или на гугл диске. Раньше я его так же использовал только для подобных целей. Однако это полноценный аналог экселя, даже возможно более функциональный и совершенно бесплатный.

Плюсов в работе с google таблицами много, вот только те немногие которые мне очень понравились:

  1. Возможность легко расшарить документ
  2. Разграничение прав
  3. Бесплатно
  4. Разграничение прав вплоть до каждой ячейки!
  5. Поддержка макросов
  6. Возможность написания собственных скриптов
  7. Доступно с любой платформы, хоть с древней нокии можно открыть и посмотреть документ.

Про собственные скрипты остановимся поподробнее и напишем простой скрипт для автоматической установки даты в определенные ячейки.

Задача:

 Подскажите пожалуйста формулу для автоматической подстановки даты или времени в необходимую мне ячейку. к примеру. в ячейке А1 я пишу Иванов, в ячейке В1 автоматически подставляется текущая дата или время. далее пишу в ячейке А2 Петров, в ячейке В2 автоматически пишется дата текущая или время.

Как решить такую задачу в Exel можно найти кучу способов и примеров в интернете, но проблема в том что все они не работают в гугл таблицах. Не работают потому что там немного другой синтаксис скриптов. Подробнее ознакомиться с ним можно в справке самого гугла. А чтобы было проще разобраться я покажу на примере как решить эту задачку в Google таблицах.

Google Таблица. Автоматическая подстановка даты и времени. Скрипт.

Автоматическая подстановка даты или времени Google Таблицы

Если вкратце, то нужно создать функцию которая срабатывает в момент редактирования определенной ячейки. Для примера, предположим что нам нужно при добавлении записи в ячейку 17 автоматически подставлять текущую дату в ячейку номер 2, а так же текущее время в ячейку номер 3.  Ещё немного усложним задачу и сделаем проверку, если в соседней ячейке уже есть какая-то запись, то данные не обновлять и не менять дату и время.

function onEdit(e) {
var sheet = e.source.getActiveSheet();
var idCol = e.range.getColumn();
var idRow = e.range.getRow();
if ( idCol == 17 && sheet.getName() =='Страница1' ) {         // тут у меня имя листа, впишите сюда своё
var Value = e.range.offset(0, -13).getValues();            // Смотрим что в ячейке с лева на 12
if ( Value == "" ) {

var vartoday = getDate();
var varnow = getTime();


sheet.getRange(idRow, 2).setValue( vartoday );
sheet.getRange(idRow, 3).setValue(varnow);
}
}
}

// Returns YYYYMMDD-formatted date.
function getDate() {
var today = new Date();
today.setDate(today.getDate());
//return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
return Utilities.formatDate(today, 'GMT+05:00', 'yyyy.MM.dd');
}

function getTime() {
var today = new Date();
today.setDate(today.getDate());
//return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
return Utilities.formatDate(today, 'GMT+05:00', 'HH:mm');
}


Если кому-то не понятен сей скрипт, пишите в комменты, постараюсь помочь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *