Автоматическое заполнение CheckBox при добавлении новой строки - AppsScript / Google Sheets - PullRequest
1 голос
/ 05 февраля 2020

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

function AddCheckBox(e) {
    var spreadsheet = SpreadsheetApp.getActive();
    var cell = SpreadsheetApp.getActive().getRange('E3');
    var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
    var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
    cell.setDataValidation(rule);
}

Я пробовал это, но это не сработало:

spreadsheet.getActiveRange().autoFillToNeighbor(SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);

Цени любую помощь.

1 Ответ

2 голосов
/ 05 февраля 2020
  • Вы хотите поставить флажок в столбце «E» в активном диапазоне.
    • В вашем вопросе вы проверяли spreadsheet.getActiveRange().autoFillToNeighbor(SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);. Исходя из этого, я думал, как выше.
  • a new row is added it означает, что значения помещаются в ячейки.

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

Шаблон 1:

В этом шаблоне используется активный диапазон.

Пример сценария:

При запуске этого сценария в столбце «E» строки активного диапазона устанавливается флажок.

function AddCheckBox(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Donations Received")  // Modified
  var activeRange = sheet.getActiveRange();
  var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
  var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
  var range = sheet.getRange(activeRange.getRow(), 5);
  range.clearContent();
  range.setDataValidation(rule);
}

Шаблон 2:

В этом шаблоне последний используется строка.

Пример сценария:

При запуске этого сценария в столбце «E» последней строки активного листа устанавливается флажок.

function AddCheckBox(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Donations Received")  // Modified
  var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
  var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
  var range = sheet.getRange(sheet.getLastRow(), 5);
  range.clearContent();
  range.setDataValidation(rule);
}

Шаблон 3:

В этом шаблоне предполагается, что AddCheckBox(e) установлен в качестве устанавливаемого триггера триггера события OnEdit.

Пример сценария:

Когда это сценарий запускается, флажок ставится в столбце «E» отредактированной строки.

function AddCheckBox(e) {
  var range = e.range;
  var sheet = range.getSheet();
  if (sheet.getSheetName() == "Donations Received") {  // Added
    var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
    var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
    var range = sheet.getRange(range.getRow(), 5);
    range.clearContent();
    range.setDataValidation(rule);
  }
}

Примечание:

  • О range.clearContent();, если вам это не требуется, пожалуйста, удалите его.

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

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