Как сделать так, чтобы скрипт проходил по всем строкам с флажками, но делал ли он что-то немного другое в указанных строках? - PullRequest
0 голосов
/ 10 мая 2019

Скрипт, который я использую, проходит по электронной таблице и удаляет элементы в строках, где есть галочка.

Мне нужно, чтобы в некоторых строках были вариации.В этом примере мне также нужно удалить содержимое в столбце A для строк 123-137, если установлен флажок в F.

Этот сценарий - потрясающий сценарий, и ему очень помог Tanaike

Если флажок установлен, используйте сценарий для очистки указанных ячеек в строке и снимите флажок после запуска сценария

Я попытался изменить приведенный ниже сценарий так, чтобы он включал:

return ar.concat (["B" + (i + 1) + ": D" + (i + 1), "F" + (i + 1), "A123: A137"]);

И много других настроек.Я не совсем понимаю, что происходит в этом сценарии.

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();
  }
}

ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ: Для указанных строк 123-137 также снимите флажок clearContent из столбца A, если установлен флажок в поле F.

Фактические результаты: ошибки скрипта, добавление экспоненциального числа строк и т. Д.

1 Ответ

0 голосов
/ 10 мая 2019
  • Когда флажок, установленный в столбце "F", был установлен, вы хотите удалить значения A123:A137.

Если мое понимание верно, как насчет этой модификации?

От:

if (deleteRanges.length > 0) { // or if (deleteRanges.length) { // Added
  sh.getRangeList(deleteRanges).clearContent();
}

До:

if (deleteRanges.length > 0) {
  deleteRanges.push("A123:A137"); // Added
  sh.getRangeList(deleteRanges).clearContent();
}

Примечание:

  • О Actual results: Script errors, adding exponential number of rows, etc., я не мог понять отвоя ситуация.Так что, если приведенные выше изменения не были полезны для вашей ситуации, можете ли вы предоставить образец таблицы для воспроизведения ошибки?Этим я хотел бы изменить его.

Редактировать:

  • Когда флажок, установленный в столбце «F», был установлен, вы хотите удалить значенияA123:A137.
    • С I also need it to delete contents in column A for rows 123-137 if the checkbox in F is checked. в вашем вопросе я понял, как и выше модификация.
    • Но в своем комментарии вы говорите It should only delete contents in A123 if F123 was checked, for example..

Сверху я понял, как показано ниже.

  • Когда проверенные строки имеют значения от 123 до 137, вы хотите удалить значение столбца «A», соответствующее строке.

Если мое понимание верно, как насчет этой модификации?

От:

return ar.concat(["B" + (i + 1) + ":D" + (i + 1), "F" + (i + 1)]);

До:

if (i + 1 >= 123 && i + 1 <= 137) {
  return ar.concat(["B" + (i + 1) + ":D" + (i + 1), "F" + (i + 1), "A" + (i + 1)]);
}
return ar.concat(["B" + (i + 1) + ":D" + (i + 1), "F" + (i + 1)]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...