Как вставить флажок в заданную ячейку при ее удалении - PullRequest
1 голос
/ 23 апреля 2019

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

Изображение листа

Я ищу заменить толькопомеченные столбцы с флажками после удаления.К сожалению, в Google Sheets нет способа сохранить данные после их удаления.Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 25 апреля 2019

У вас может быть скрипт для повторного добавления проверки данных для этих диапазонов, если перезапись не-флажков будет опасной.Опять же, это, естественно, безопаснее и намного быстрее, так как он делает целые столбцы сразу.

function checkboxes() {

  var targetSheetName = "Sheet1",
      headerRows = 1,
      checkboxColumns = [1, 3, 4, 5, 7]; // UPDATE THIS LIST IF RESTRUCTURING SPREADSHEET

  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheetName),
      maxRows = targetSheet.getMaxRows(),
      targetRows = maxRows - headerRows,
      enforceCheckbox = SpreadsheetApp.newDataValidation();
  enforceCheckbox.requireCheckbox();
  enforceCheckbox.setAllowInvalid(false);
  enforceCheckbox.build();

  for (var c in checkboxColumns) {
    var targetRange = targetSheet.getRange(headerRows+1, checkboxColumns[c], targetRows);
    targetRange.setDataValidation(enforceCheckbox);
  }
}

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

function checkboxes() {

  var targetSheetName = "Sheet1",
      headerRows = 1,
      checkboxColumns = [1, 3, 4, 5, 7]; // UPDATE THIS LIST IF RESTRUCTURING SPREADSHEET

  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheetName),
      maxRows = targetSheet.getMaxRows(),
      targetRows = maxRows - headerRows;

  for (var c in checkboxColumns) {
    for (var r = headerRows + 1; r <= maxRows; r++) {    
      var targetRange = targetSheet.getRange(r, checkboxColumns[c]);
      if (targetRange.isChecked() == null) {
        targetRange.insertCheckboxes();
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...