Если флажок установлен, используйте сценарий для очистки указанных ячеек в строке и снимите флажок после запуска сценария - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь установить флажок для запуска сценария в той строке, в которой он находится. Необходимо выполнить цикл по всем строкам на указанном листе.

Если флажок установлен в столбце F, яхочу наметить скрипт для очистки столбцов BF.

B - это флажок, который должен быть установлен в FALSE. C - проверенный ввод данных. D - проверенный ввод данных. E - формула, основанная на данных в C и D. Формула должна остаться.

F = true - это флажок запуска

Если установлен флажок F, очистить содержимое в B, C, D, F (E не следует очищать, поскольку это формула)

Я пробовализменение сценариев отсюда и других ссылок безуспешно:

Сброс флажков в false

Использование сценария для создания документов из строк в Google Sheet, если установлен флажок

Скрипт Google Sheets для скрытия строки, если установлен флажок


 function try_It(){
 deleteRow(5); //// choose col = 2 for column C, 5 for F
 }

 function deleteRowContents (col){ // col is the index of the column to check for checkbox being true

 var sh = SpreadsheetApp.getActiveSheet();
 var data = sh.getDataRange().getValues();
 var targetData = new Array();
 for(n=0;n<data.length;++n){
 if(data[n][col]!="TRUE" && data[n][col]!="FALSE"){ targetData.push(data[n])};
 }
 Logger.log(targetData);
 sh.getDataRange().clear();
 sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
 }

Ожидаемые результаты: Если отмечен столбец F, снимите B: F в тех же строках.(Я знаю, что приведенный выше сценарий даже не близок к завершению).

Фактические результаты: это удаляет все форматирование на всем листе.Он не очищает диапазон должным образом даже в столбце F.

1 Ответ

1 голос
/ 08 мая 2019
  • Требуется очистить значения столбца «B» от «D» и столбца «F», если флажок столбца «F» установлен на true.
    • В этом случае вы хотите изменить флажок на false.
  • Вы не хотите очищать формат ячейки.

Если мое понимание верно, как насчет этой модификации?Пожалуйста, подумайте об этом как об одном из нескольких решений.Последовательность измененного сценария выглядит следующим образом.

  • Создание списка диапазонов для удаления столбцов из полученных значений.
  • Очистка содержимого списка диапазонов.

Модифицированный скрипт:

function deleteRowContents (col){ // col is the index of the column to check for checkbox being true
  var col = 6; // If the column "F" is 6, please set 6.
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet4"); // Modified
  var data = sh.getDataRange().getValues();

  // Below script was modified.
  var deleteRanges = data.reduce(function(ar, e, i) {
    if (e[col - 1] === true) { // Modified
      return ar.concat(["B" + (i + 1) + ":D" + (i + 1), "F" + (i + 1)]);
    }
    return ar;
  }, []);
  if (deleteRanges.length > 0) { // or if (deleteRanges.length) { // Added
    sh.getRangeList(deleteRanges).clearContent();
  }
}

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...