Учеба и наука
Как соединить два макроса в 1-ин в гугл- таблицах? Так, что бы одна из команд общего макроса работала в другой гугл-книге и брала данные из первой. - вопрос №5047590
Здравствуйте. Нужна помощь. Есть гугл таблица с кнопками, на которые записан макрос для изменения цвета ячейки под кнопкой (ON — желтый, OF — в зеленый цвет, так же цвет меняется и на первом листе). В этот макрос нужно прописать команду, которая позволит из имеющейся таблицы с кнопками переносить данные ячейки С3 в другую таблицу (при нажатии на кнопку ON — данные С3 появляются в другой таблице и окрашиваются в желтый, при нажатии на кнопку OF — в серый цвет). Т.е нужно соединить два макроса в 1-ин. Как это можно сделать? Подскажите пожалуйста. Таблица с кнопками — docs.google.com/spreadsheets/d/1rpzquekGqamTkjvR_6yXr6SgiVCu3M3bgTYSs10Iwe0/edit#gid=2073924395. Другая таблица — docs.google.com/spreadsheets/d/1ILWKgP2MRgAFDg7MRU6xeRYVBmYOcE0LmyHLnp7V17w/edit#gid=747610966
январь 24, 2023 г.
-
Всего ответов: 1
-
Для того чтобы объединить два макроса в один, нужно внести несколько изменений в код:
- В начале кода необходимо добавить функцию
для получения ссылки на лист с кнопками в первой таблице:getSheet()
<span class="hljs-function">function <span class="hljs-title">getSheet</span>()</span> { <span class="hljs-keyword">return</span> SpreadsheetApp.getActiveSpreadsheet().getSheetByName(<span class="hljs-string">'Название листа с кнопками'</span>); }
Вместо «Название листа с кнопками» нужно указать наименование листа, на котором находятся кнопки.
- Добавляем команду
для открытия другой таблицы:openById()
- var targetSpreadsheet = SpreadsheetApp.openById('ID целевой таблицы'); var targetSheet = targetSpreadsheet.getSheetByName('Название листа в целевой таблице');
Вместо «ID целевой таблицы» нужно указать идентификатор целевой таблицы, а вместо «Название листа в целевой таблице» — наименование листа, на который нужно отправлять данные.
- В теле макроса
нужно добавить код для отправки данных на другой лист:changeColor()
- function changeColor(range) { var sheet = getSheet(); var targetSpreadsheet = SpreadsheetApp.openById('ID целевой таблицы');
- var targetSheet = targetSpreadsheet.getSheetByName('Название листа в целевой таблице');
- var cellValue = sheet.getRange(«C3»).getValue(); if (range.getValue() == «ON») { range.setBackground(«yellow»); sheet.getRange(«C3»).setBackground(«yellow»); targetSheet.appendRow([cellValue]); targetSheet.getRange(targetSheet.getLastRow(), 1, 1, 1).setBackground(«yellow»); } else { range.setBackground(«green»); sheet.getRange(«C3»).setBackground(«gray»); targetSheet.appendRow([cellValue]); targetSheet.getRange(targetSheet.getLastRow(), 1, 1, 1).setBackground(«gray»); } }
Когда пользователь нажимает на кнопку, макрос
выполняет следующие действия:changeColor()
Получает ссылку на лист с кнопками и данные ячейки С3.
Открывает целевую таблицу и находит нужный лист.
Если пользователь нажал на кнопку «ON», то данные ячейки С3 отправляются на целевой лист и окрашиваются в желтый цвет. Если пользователь нажал на кнопку «OF», то данные ячейки С3 также отправляются на целевой лист, но окрашиваются в серый цвет.
Макрос изменяет цвет фона кнопки и ячейки С3 в зависимости от того, какую кнопку нажал пользователь
- В начале кода необходимо добавить функцию
Похожие вопросы
если в ячейке будет число в диапазоне 1-25, то присвоить значение 50, также если будет число в диапазоне 26-50, присвоить значение 100
апрель 27, 2024 г.
Добрый день! Есть массив данных с миллионами строк, обрабатываемый в Python, при выводе в csv формат файл становится очень тяжелым более 15гб =>
март 29, 2024 г.
Помогите в Excel сделать формулу, которая находит из даты количество дней в году
март 18, 2024 г.
Добрый день! Подскажите, пожалуйста, как за счет функции просмотрX (или с использованием дополнительных функций) задать условия поиска,
февраль 24, 2024 г.
Здравствуйте, подскажите как сделать что бы при добавление столбца в лист 1 он автоматически удалялся из листа 2?
февраль 8, 2024 г.