Скрипт приложений Google листов : используйте флажок для копирования содержимого ячейки в другую ячейку

#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. Огромное спасибо.