#google-apps-script #google-sheets #checkbox
Вопрос:
Я хотел бы создать функцию для копирования содержимого ячеек на одном листе из двух столбцов (A и C) в столбцы E и G (соответственно), если установлен флажок в столбце D.
Тот же вопрос, если бы вместо этого диапазон столбцов (A-C) копировался в столбцы (E-G) с флажком, все еще находящимся в столбце D.
Спасибо вам за ваши полезные и проницательные решения.
Комментарии:
1. Все, что вам нужно, — это функция триггера onEdit() с некоторым сценарием для копирования значений.
Ответ №1:
Решение
- Вы можете попробовать использовать приведенный ниже пример сценария, в котором используется метод CopyTo() внутри триггера onEdit() с условием копировать только при установке флажка в столбце D.
Пример Сценария
function onEdit(){
var ss = SpreadsheetApp.getActive().getActiveSheet();
//Gets the Location where user cliks on the sheet
var selection = ss.getActiveCell().getA1Notation().split("");
var row = ss.getActiveCell().getRow();
//Gets the checkbox value
var checkBoxValue = ss.getActiveCell().getValue().toString();
//Makes sure to run only when user selects any checkbox on column D
if(selection[0] != "D") return;
switch(checkBoxValue){
case checkBoxValue = "true":
ss.getRange("A" row).copyTo(ss.getRange("E" row));
ss.getRange("C" row).copyTo(ss.getRange("G" row));
/* if you want to change it to copy a range of columns, use this instead:
ss.getRange("A" row ":C" row).copyTo(ss.getRange("E" row ":G" row);
*/
break;
}
}
Демонстрация теста
Образец Листа
Комментарии:
1. Спасибо @irvinjayg ! Я скопировал ваш пример и сценарий в новую электронную таблицу. Он безупречно работает в строках 1-9, но любой флажок, установленный начиная с строки 10 и далее, не переносит значения. Я в тупике…
2. Понял вас, возникли небольшие проблемы с выбором строк, обновил свой скрипт, и теперь он будет работать с 10-й строкой и выше.
3. Спасибо, что нашли время обновить свой сценарий, @irvinjayg. Теперь он отлично работает для любой строки, но, похоже, триггер работает только в том случае, если он расположен в столбцах A-Z (хотя он будет эффективно копировать данные, расположенные в любом столбце, в любой другой столбец). Я обнаружил, что если триггер расположен начиная с столбца AA и далее (что в моем случае), сценарий не вернет никакого результата.
4. Некоторые дополнительные подробности для вас, @irvinjayg. Я обнаружил, что если триггер расположен начиная с столбца AA и далее (что в моем случае), сценарий не вернет никакого результата. Мой точный сценарий таков : исходные данные в col F amp; G, триггер в col AF, результаты копирования в col AG amp; AH. Огромное спасибо.