Некоторое время я искал и пытался вместе работать над сценарием из различных тем, на которые были даны ответы, который позволит мне настроить содержимое соседних ячеек на основе введенных данных. Кажется, я не могу заставить его работать должным образом, и мне нужна помощь, чтобы направить корабль в правильном направлении. Вот чего я пытаюсь достичь:
--Если значение ячейки A2: A представляет собой шестизначное число И значение ячейки D2: D (та же строка) равно «MATCH», тогда значение ячейки B2: B должно быть установлено на «ANN». значение ячейки A2: A - шестизначное число, И значение ячейки D2: D (та же строка) - «NO MATCH», тогда значение для ячейки B2: B должно быть установлено на «ANN» и выпадающий список проверки данных список ['ANN', 'RNW'] заполнить со значением по умолчанию для списка, установленным на «ANN» - Если значение ячейки A2: A имеет длину семи или более символов, то раскрывающийся список проверки данных of ['1DY', 'RNW', 'NEW'] заполнить со значением по умолчанию для списка, установленным на "1DY"
Можно ли вообще установить значение ячейки проверки данных на конкретное значение по умолчанию? Это важно, поскольку когда пользователь вводит данные, он, скорее всего, примет значение по умолчанию. Если им не нужно значение по умолчанию, они могут выбрать значение из раскрывающегося списка.
Я создал тестовый лист, который показывает, как должен выглядеть лист, когда данные заполняются в столбце A, а соответствующие значения - в столбце B.
Мой тест здесь: https://docs.google.com/spreadsheets/d/1p8sq63S-vSU1FKFLjtr2ZypItN5viXotoZL0Ki2PoQM/edit?usp=sharing
Вот сценарий, который я пытался создать (я тоже считаю его забавным). Это моя первая попытка настроить скрипт Google для работы с электронной таблицей.
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var aSheet = ss.getActiveSheet();
var aCell = aSheet.getActiveCell();
var aColumn = aCell.getColumn();
var aRow = aCell.getRow();
//var licenseStatus = aSheet.getRange(aRow, aColumn+9).getValue();
// The row and column here are relative to the range
// getCell(1,1) in this code returns the cell at B2, B2
var licenseTypeCell = aSheet.getRange(aRow, aColumn+1);
if (aColumn == 1 && aSheet.getName() == 'Onsite') {
if (isnumber(aCell) && (len(aCell) <= 6)) {
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['ANN','RNW']).build();
licenseTypeCell.setValue("ANN");
licenseTypeCell.setDataValidation(rule);
} else {
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['1DY','RNW','NEW']).build();
licenseTypeCell.setValue("1DY");
licenseTypeCell.setDataValidation(rule);
}
}
}
Любая помощь / руководство будут очень благодарны.