В текущей статье я хочу поделиться своими знаниями, как и что можно проделывать с листом гугл таблицы с помощью скрипта. Данный материал идет, как дополнение к основной статье по гугл скриптам и программным решениям при работе с гугл таблицей.
Обратиться к существующему листу гугл таблицы
1. SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]
Обращаемся к коллекции листов в активной таблице и берем первый (нумерация начинается с нуля)
2. SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
Обращаемся к активному листу (открытому на текущий момент)
3. SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1")
Обращаемся к листу по имени (в примере «Лист1»).
Работать с листами можно не только в открытой таблице. С помощью скрипта можно открыть другую таблицу, а затем работать с ее листами точно так же, как и в активной таблице.
Как скриптом открыть другую гугл таблицу, описано ЗДЕСЬ.
Далее в статье, для удобства, в качестве примера будем использовать активную гугл таблицу.
Создать новый лист
let ss = SpreadsheetApp.getActiveSpreadsheet(); ss.insertSheet();
Данным кодом вставляем новый лист после активного (открытого в текущий момент), присваиваем ему имя по умолчанию (типа Лист10) и делаем его активным.
let ss = SpreadsheetApp.getActiveSpreadsheet(); ss.insertSheet("Новый лист");
Вставляем новый лист после активного, присваиваем имя «Новый лист» и активируем его.
let ss = SpreadsheetApp.getActiveSpreadsheet(); ss.insertSheet(1);
Вставляем новый лист после первого, называем по умолчанию (типа Лист11) и активируем его. Если нужно вставить новый лист в самом начале, то в качестве индекса необходимо указать 0 (нумерация листов начинается с нуля).
let ss = SpreadsheetApp.getActiveSpreadsheet(); let pattern = ss.getSheetByName("testSheet"); ss.insertSheet(1,{template: pattern});
Сделать копию существующего листа (в примере копируем лист «testSheet») и поместить ее после первого листа (цифра 1 — порядковый номер листа). Похоже, если кликнуть правой кнопкой мышкой на имя нужного листа в выбора пункта «Создать копию», только здесь мы еще выбираем, после какого листа вставить копию.
Вы можете комбинировать различные параметры при создании нового листа. Например, приведу код:
let ss = SpreadsheetApp.getActiveSpreadsheet(); let pattern = ss.getSheetByName("testSheet"); ss.insertSheet("Новый лист 2", 6, {template: pattern});
Данным фрагментом скрипта мы создаем копию листа «testSheet» после 6-го листа и присваиваем ему имя «Новый лист 2».
Удалить лист
let ss = SpreadsheetApp.getActiveSpreadsheet(); ss.deleteActiveSheet();
Удаляем активный лист. Будьте внимательны, т.к. скрипт удаляет лист без подтверждения!
let ss = SpreadsheetApp.getActiveSpreadsheet(); let sheet1 = ss.getSheetByName("ЛистДляУдаления"); ss.deleteSheet(sheet1);
Данным скриптом мы удаляем лист, который хранится в переменной sheet1.
Обратите внимание, что метод «deleteSheet» удаляет объект (лист), который хранится в переменной sheet1. Получить его можно любым из способов, описанных выше в статье.
Переименовать лист
let ss = SpreadsheetApp.getActiveSpreadsheet(); let sheet1 = ss.getActiveSheet(); sheet1.setName("Новое имя");
Данный скрипт меняет имя активного листа (то, что лежит в переменной sheet1) на «Новое имя». Как и в предыдущем случае, получить в переменную sheet1 объект лист можно различными способами.
Конечно же, можно использовать сокращенную форму:
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Новое имя").setName("Для тестирования");
Думаю, комментарии здесь излишни 🙂
В конце статьи приведу код функции, которую я часто использую в проектах.
function isSheetExists(spreadSheet, sheetName) { // если лист существует, возвращает True или False, если указанного листа нет try { spreadSheet.getSheetByName(sheetName).getRange(1,1).getValue(); //попытка обращения к ячейке листа return true; } catch(e) {return false;} };
Данная функция проверяет существование определенного листа в заданной таблице (в переменной sheetName передаем имя листа, в spreadSheet — наша таблица, как объект).
Если лист существует — возвращает истину, или ложь — в противном случае.
Вариантов использования данной функции может быть сколько угодно.
Например, перед удалением определенного листа или при копировании данных из одной таблицы в другую, вначале проверяем существование листа, чтобы потом не возникло непредвиденной ошибки и т.п.
Надеюсь, информация в статье оказалась вам полезной. Дополнительно рекомендую к прочтению обзорную статью с различными решениями, скриптами и прочими полезностями при работе с гугл таблицами.
Рекомендую также сохранить статью в закладки, т.к. планируется обновление и дополнение информации.
Рекомендую почитать:
- «10 бирж фриланса и удаленной работы для новичков и профи: список и рекомендации по заработку»
- «Доход на партнерских/реферальных программах: примеры и полезные советы»
- «Доход на фрилансе: бесплатное размещение портфолио, объявлений об услугах»