Сегодня разберем, как с помощью скрипта работать с отдельной ячейкой гугл таблицы. Пост является дополнением к основной статье по гугл скриптам и программным решениям при работе с гугл таблицей.
Поэтому, если вы у нас впервые, рекомендую вначале ознакомится с указанными материалами, а мы продолжим.
В конце, по уже сложившейся традиции, приведу несколько готовых решений, которые я использовал в своей практике, работая с ячейкой.
Перед тем, как начинать, примем за основу, что у нас в переменной sheet лежит объект лист, которому мы можем обращаться с помощью данной переменной.
Как работать с листом, описано ЗДЕСЬ.
Идем дальше.
Для начала обратимся к ячейке.
let myCell = sheet.getActiveCell();
let myCell = sheet.getRange("A2");
let myCell = sheet.getRange(2,1);
В первом случае мы обратились к активной ячейке (где находится курсор), в остальных — обратились по адресу — ячейка «А2», она же ячейка на второй строке первого столбца.
Вам выбирать, как и каким способом пользоваться (второй и третий — по сути одно и то же).
Получить значение ячейки
let a1 = myCell.getValue(); //в переменной a1 значение нашей ячейки
Записать в ячейку новое значение
myCell.setValue("Новое значение"); //записать в нашу ячейку строку "Новое значение"
Получить формулу, что используется в ячейке
let formula = myCell.getFormula();
Задать формулу для нашей ячейки
let formula = "=SUM(H9:H10)"; myCell.setFormula(formula);
Обратите внимание, что вы создаете новую формулу с помощью обычной строки. Соответственно, вы можете создать формулу любой сложности, используя переменные в качестве аргументов при конструировании строки с формулой.
Узнать координаты (номер строки и колонки) ячейки
let IndexRow = myCell.getRowIndex(); //номер строки let IndexColumn = myCell.getColumn(); //номер колонки
Также вы можете узнать адрес ячейки в буквенном виде (типа «A2»). Для этого необходимо воспользоваться специальной командой getA1Notation().
К примеру, чтобы получить адрес нашей ячейки, нужно написать
let address = myCell.getA1Notation();
В результате в переменной address будет адрес нашей ячейки (к примеру, «D5»).
Сдвиг от текущей ячейки (смещение фокуса)
let CountRows = 2; //на сколько строк смещаться вниз от текущей ячейки let CountColumns = 1; //на сколько колонок смещаться вправо от текущей ячейки let newCell = myCell.offset(CountRows,CountColumns); //можно задавать отрицательные значения. Нужно учитывать, чтобы координаты новой ячейки не выходили за пределы листа, иначе возникнет ошибка
Форматирование ячейки.
Часто нам при решении определенных задач необходимо применить различные форматирования к нашей ячейке, например, установить цвет текста или задать числовой формат для удобочитаемости.
Приведу в качестве примера несколько реализаций форматирования.
myCell .setFontColor('#ff0000') .setFontStyle('italic') .setBackground('#ffff00') .setFontSize(20) .setFontWeight('bold');
Данным скриптом мы устанавливаем для нашей ячейки цвет текста (setFontColor), тип шрифта курсив (setFontStyle), цвет заливки ячейки (setBackground), размер шрифта (setFontSize) и делаем шрифт жирным (setFontWeight).
Обратите внимание на форму записи параметров внешнего вида, которые мы меняем. Вначале указываем нашу ячейку, затем после точки прописываем то, что меняем. Можно писать в одну строку, можно через перевод строки (так удобнее). В конце закрываем оператор точкой с запятой.
Также часто приходится задавать числовое форматирование ячейки или отформатировать ее, как дату. Приведу решение.
myCell .setNumberFormat('dd.MM.yyyy HH:mm:ss');//применяем формат - дата + время
myCell .setNumberFormat('#,##0.00');//число вида 1 200 123,55
Соответственно, вы можете выводить в ячейке только дату или применять форматирование числа на свое усмотрение.
Также можно объединять ячейки, применить выравнивание, перенос текста и пр. (при объединении сохраняется значение левой верхней (первой) ячейки выделенного диапазона.
sheet.getRange('C1:E2') .merge() //объединяем ячейки .setWrapStrategy(SpreadsheetApp.WrapStrategy.WRAP) //перенос текста .setHorizontalAlignment('center') //горизонтальное выравнивание .setVerticalAlignment('middle'); //вертикальное выравнивание
Вставка изображения с интернет-ресурса в заданную ячейку
let LinkLogo = "https://zhyttia-prekrasne.com/IRPIN-kids-Fest_1.png"; //ссылка на логотип let AddresLogo = "=IMAGE(" + '"' + LinkLogo + '"' + ")"; //генерируем формулу для вставки изображения в ячейку myCell.setFormula(AddresLogo);// вставляем формулу в ячейку
Подобная задача возникла у меня, когда я создавал макрос, который обрабатывал таблицу с данными всех участников песенного конкурса (их было около 100 человек) и по каждому их них генерировал специальный бланк, который потом раздавали судьям. Работу данного скрипта можно посмотреть в этом видео.
Если изображение большое, нужно либо объединить несколько ячеек в одну и потом вставлять изображение, либо сделать размер ячейки больше.
Изменение размера ячейки.
Особенность. Изменение размера работает для всего листа для заданной через индексы (строка, колонка) определенной ячейки или диапазона
let IndexRow = myCell.getRowIndex(); //номер строки let IndexColumn = myCell.getColumn(); //номер колонки let NewHeight = 150; //новая высота ячейки let NewWidth = 150; //новая ширина ячейки sheet.setRowHeight(IndexRow, NewHeight); //устанавливаем высоту ячейки sheet.setColumnWidth(IndexColumn, NewWidth); //устанавливаем ширину ячейки
Еще пример реализации. Мы объединим несколько ячеек, увеличим размеры итоговой (объединенной) ячейки, закрасим ее в желтый и обведем черной рамкой:
let MyRange = MySpreadSheet.getRange('F6:G7').activate().merge(); let IndexRow = MyRange.getRowIndex(); //номер строки let IndexColumn = MyRange.getColumn(); //номер колонки let NewHeight = 200; //высота let NewWidth = 250; //ширина MySpreadSheet.setRowHeight(IndexRow, NewHeight); //устанавливаем высоту ячейки MySpreadSheet.setColumnWidth(IndexColumn, NewWidth); //устанавливаем ширину ячейки MyRange .setBackground('#ffff00') //заливка желтым .setBorder(true, true, true, true, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID); //обводка черной рамкой
Конечно же, вы можете скриптом применять для вашей ячейки условное форматирование. Подробности читайте здесь.
Также хочу порекомендовать обзорную статью с различными решениями, скриптами и прочими полезностями при работе с гугл таблицами.
Рекомендую почитать:
- «10 бирж фриланса и удаленной работы для новичков и профи: список и рекомендации по заработку»
- «Доход на партнерских/реферальных программах: примеры и полезные советы»
- «Доход на фрилансе: бесплатное размещение портфолио, объявлений об услугах»