Используя Google Apps Script, вы можете создать функцию, которая:
Удаляет все границы на вашем листе.
Находит все пустые строки, к которым должны применяться границы.
Устанавливает границы для этих строк.
Следующий код выполняет действия, описанные выше:
function setSheetBorders() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('Sheet1');
// Remove all borders
var dataRange = sheet.getDataRange();
dataRange.setBorder(false, false, false, false, false, false);
var firstColumn = sheet.getRange("A:A").getValues();
var ranges = [];
for (var i=1; i<firstColumn.length; i++) {
if (firstColumn[i][0]) {
ranges.push("A" + i + ":" + i);
}
}
sheet.getRangeList(ranges).setBorder(false, false, true, false, false, false, "black",
SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
}
Запуск выполнения сценария
Что касается выполнения этого сценария, идеальной ситуацией будет его автоматическое выполнение при редактировании листа. Это можно сделать с помощью триггера onEdit()
. Настроить его так же просто, как создать следующую функцию в скрипте, привязанном к листу:
function onEdit(e) {
setSheetBorders();
}
Однако, это будет только , когда пользователь будет редактировать листа, а не при редактировании сценария.
Поскольку изменение документа Sheets предназначено для визуализации, я предлагаю вместо этого использовать триггер onOpen()
. Это приведет к тому, что приведенный выше скрипт будет выполняться всякий раз, когда пользователь обращается к документу.
function onOpen(e) {
setSheetBorders();
}
Кроме того, вы также можете рассмотреть вопрос о создании пользовательского меню . Это позволит вам вручную запускать скрипт, когда вы захотите использовать пользовательский интерфейс.
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('Set Sheet Borders', 'setSheetBorders')
.addToUi();
setSheetBorders();
}