예시
코드
// ==============================================================================
// IA 테마로 현재 시트의 모든 셀 테두리 설정
// - maxColumns: 목표 열(1 = A, 2 = B, ...)
// - titleColumnCount : 무시할 타이틀 컬럼 개수
// ==============================================================================
function makeSheetThemeIA(maxColumns, titleColumnCount=1) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
const BORDER_1 = SpreadsheetApp.BorderStyle.SOLID;
const BORDER_2 = SpreadsheetApp.BorderStyle.SOLID_MEDIUM;
const COL_WHITE = "white";
const COL_GRAY = "#b7b7b7";
const COL_BLACK = "black";
for (var i = titleColumnCount - 1; i < values.length; i++) {
// 지정된 열까지 비어 있는지 확인하고, 비어 있지 않은 첫 번째 열의 인덱스 탐색
var firstNonEmptyColumn = -1;
for (var j = 0; j < maxColumns && j < values[i].length; j++) {
if (values[i][j] !== '') {
firstNonEmptyColumn = j;
break;
}
}
// 기본: 모든 라인 테두리 설정
for (var k = 0; k < range.getNumColumns(); k++) {
// 상하 라인 하얀색
range.getCell(i + 1, k + 1).setBorder(true, null, true, null, null, null, COL_WHITE, BORDER_1);
// 좌우 라인 회색
range.getCell(i + 1, k + 1).setBorder(null, true, null, true, null, null, COL_GRAY, BORDER_2);
}
// 모든 지정된 열이 비어 있는 경우 생략
if (firstNonEmptyColumn == -1) continue;
// 비어 있지 않은 첫 번째 열 이전의 모든 열에 대해 위쪽 테두리를 하얀색 1px로 설정
for (var k = 0; k < firstNonEmptyColumn; k++) {
range.getCell(i + 1, k + 1).setBorder(true, null, null, null, null, null, COL_WHITE, BORDER_1);
range.getCell(i + 1, k + 1).setBorder(true, null, null, null, null, null, COL_WHITE, BORDER_1);
}
// A: 굵은 검정, B: 검정, C ~ : 회색
const lineWidth = firstNonEmptyColumn === 0 ? BORDER_2 : BORDER_1;
const lineCol = firstNonEmptyColumn <= 1 ? COL_BLACK : COL_GRAY;
for (var k = firstNonEmptyColumn; k < range.getNumColumns(); k++) {
range.getCell(i + 1, k + 1).setBorder(true, null, null, null, null, null, lineCol, lineWidth);
}
}
// 마지막 라인은 하단 굵은 검정 라인
for (var k = 0; k < range.getNumColumns(); k++) {
range.getCell(values.length, k + 1).setBorder(null, null, true, null, null, null, COL_BLACK, BORDER_2);
}
}
function makeSheetThemeIA_2() { makeSheetThemeIA(2, 1); }
function makeSheetThemeIA_3() { makeSheetThemeIA(3, 1); }