Как насчет этого примера сценария? В этом примере сценария, когда вы редактируете ячейку на листе «Лист1», граница динамически добавляется триггером события OnEdit. Пожалуйста, подумайте об этом как один из нескольких ответов. Ход этого скрипта следующий.
- Скрипт автоматически запускается триггером события OnEdit при редактировании ячейки.
- Получить название листа.
- Очистить все границы.
- Создание списка диапазонов для добавления границы.
- Добавьте границу, используя список диапазонов.
Я использовал вышеуказанный поток, потому что я не уверен в ситуации редактирования ячеек.
Пример сценария:
Пожалуйста, скопируйте и вставьте следующий скрипт в связанный с контейнером скрипт электронной таблицы (в этом случае, пожалуйста, сделайте это с электронной таблицей "До".) Когда вы редактируете ячейку, граница добавляется.
function onEdit(e) {
if (e.source.getActiveSheet().getSheetName() == "Sheet1") {
var sheet = e.source.getActiveSheet();
sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).setBorder(null, null, null, null, false, false);
var values = sheet.getRange(2, 2, sheet.getLastRow() - 1, 1).getValues();
var rangeList = values.reduce(function(ar, e, i) {
if (i > 0 && values[i - 1][0] != e[0] && e[0] != "") {
ar.push("A" + (i + 1) + ":D" + (i + 1));
}
return ar;
}, [])
rangeList.push(sheet.getRange(sheet.getLastRow(), 1, 1, sheet.getLastColumn()).getA1Notation());
sheet.getRangeList(rangeList).setBorder(null, null, true, null, false, false, "black", SpreadsheetApp.BorderStyle.SOLID_THICK);
}
}
Примечание:
- В этом примере сценария, когда отредактированное имя листа "Sheet1", сценарий запускается. Если вы хотите изменить это, пожалуйста, измените
if (e.source.getActiveSheet().getSheetName() == "Sheet1") {
.
Ссылки:
Edit:
- Ваша первая общая таблица отличается от вашей реальной таблицы.
- Общая таблица в вашем ответном комментарии является актуальной таблицей.
- Вы хотите проверить столбец «C» и добавить границу от столбца «A» к «P».
- Данные начинаются со строки 3.
Если мое понимание верно, измените приведенный выше скрипт следующим образом.
От:
var values = sheet.getRange(2, 2, sheet.getLastRow() - 1, 1).getValues();
Кому:
var values = sheet.getRange(3, 3, sheet.getLastRow() - 1, 1).getValues();
И
От:
if (i > 0 && values[i - 1][0] != e[0] && e[0] != "") {
ar.push("A" + (i + 1) + ":D" + (i + 1));
}
Кому:
if (i > 0 && values[i - 1][0] != e[0] && e[0] != "") {
ar.push("A" + (i + 2) + ":P" + (i + 2));
}