반응형
"Google 스프레드시트에서 중복된 차량 번호를 자동으로 색칠할 수 있을까?"
스프레드시트를 사용하다 보면 중복 데이터를 쉽게 확인하고 싶을 때가 있죠!
👉 오늘은 Google Apps Script(GAS)를 활용해 차량 번호 중복을 감지하고, 연한 무지개 색상(파스텔톤)으로 강조하는 방법을 알려드릴게요!
📌 Google Apps Script를 활용한 자동 하이라이트 기능
이 기능을 사용하면 다음과 같은 작업이 가능합니다.
✅ 중복된 차량 번호 자동 감지
✅ 연한 무지개 색상(파스텔톤) 20가지 활용
✅ 중복이 없는 경우 색상 자동 제거
✅ 스프레드시트 메뉴에 "중복 확인" 기능 추가
🛠️ Google Apps Script 코드 적용 방법
1️⃣ Google Apps Script 편집기 열기
- Google 스프레드시트를 엽니다.
- 상단 메뉴에서 "확장 프로그램" → "Apps Script" 클릭!
- 아래 코드를 복사해서 붙여넣기 합니다.
📌 2️⃣ Google Apps Script 코드 (복사해서 사용하세요!)
function highlightDuplicatePlatesInCustomRange() {
const TARGET_SHEET_NAME = "로그"; // 대상 시트 이름
try {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(TARGET_SHEET_NAME);
if (!sheet) {
ss.toast(`"${TARGET_SHEET_NAME}" 시트를 찾을 수 없습니다.`, '오류');
return;
}
const ranges = ["I2:I20", "M2:M20", "Q2:Q20"]; // 검사할 범위
// 연한 무지개(파스텔톤) 색상 20가지
const colors = [
"#F3E5F5", "#E8EAF6", "#E3F2FD", "#E0F7FA", "#E0F2F1",
"#E8F5E9", "#F1F8E9", "#F9FBE7", "#FFF8E1", "#FFF3E0",
"#FBE9E7", "#FFEBEE", "#FCE4EC", "#EDE7F6", "#D1C4E9",
"#C5CAE9", "#BBDEFB", "#B2EBF2", "#B2DFDB", "#C8E6C9"
];
let processedCells = 0;
let duplicatesFound = 0;
ranges.forEach(rangeStr => {
try {
const range = sheet.getRange(rangeStr);
const values = range.getValues();
const valueCounts = {};
values.forEach(row => {
if (row[0]) valueCounts[row[0]] = (valueCounts[row[0]] || 0) + 1;
});
const colorMap = {};
let colorIndex = 0;
const newBackgrounds = values.map(row => {
const value = row[0];
if (!value || valueCounts[value] <= 1) return ["transparent"];
if (!colorMap[value]) {
colorMap[value] = colors[colorIndex % colors.length];
colorIndex++;
}
duplicatesFound++;
return [colorMap[value]];
});
for (let i = 0; i < values.length; i++) {
const cell = range.getCell(i + 1, 1);
if (newBackgrounds[i][0] !== "transparent") {
cell.setBackground(newBackgrounds[i][0]);
} else {
cell.setBackground(null);
}
processedCells++;
}
} catch (rangeError) {
console.error(`범위 처리 중 오류 발생: ${rangeStr}`, rangeError);
ss.toast(`범위 ${rangeStr} 처리 중 오류가 발생했습니다.`, '오류');
}
});
ss.toast(`처리 완료! ✅\n검사된 셀: ${processedCells}개\n중복 찾음: ${duplicatesFound}개`, '작업 완료');
} catch (error) {
console.error('스크립트 실행 중 오류 발생:', error);
SpreadsheetApp.getActiveSpreadsheet().toast('스크립트 실행 중 오류가 발생했습니다.', '오류');
}
}
// 📌 Google Sheets 메뉴에 추가!
function onOpen() {
try {
const ui = SpreadsheetApp.getUi();
ui.createMenu('🚗 중복 확인')
.addItem('🔍 중복 값 하이라이트', 'highlightDuplicatePlatesInCustomRange')
.addSeparator()
.addItem('🗑️ 하이라이트 제거', 'clearHighlights')
.addToUi();
} catch (error) {
console.error('메뉴 생성 중 오류 발생:', error);
}
}
// 🗑️ 하이라이트 제거 기능
function clearHighlights() {
const TARGET_SHEET_NAME = "로그"; // 원하는 시트 이름
try {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(TARGET_SHEET_NAME);
if (!sheet) {
ss.toast(`"${TARGET_SHEET_NAME}" 시트를 찾을 수 없습니다.`, '오류');
return;
}
const ranges = ["I2:I20", "M2:M20", "Q2:Q20"];
ranges.forEach(rangeStr => {
const range = sheet.getRange(rangeStr);
range.setBackground(null);
});
ss.toast(`"${TARGET_SHEET_NAME}" 시트의 하이라이트가 제거되었습니다.`, '작업 완료');
} catch (error) {
console.error('하이라이트 제거 중 오류 발생:', error);
SpreadsheetApp.getActiveSpreadsheet().toast('하이라이트 제거 중 오류가 발생했습니다.', '오류');
}
}
반응형
🎯 결과 화면 예시
🚀 중복이 없는 값은 자동으로 배경색이 제거됩니다!
💡 마무리: Google Apps Script 활용 팁
Google Apps Script를 활용하면 스프레드시트의 반복적인 작업을 자동화할 수 있습니다.
이 기능을 적용하면 데이터 관리가 훨씬 효율적이 되겠죠? 🎉
💬 질문이 있으시면 댓글로 남겨주세요!
👍 유용했다면 공유 & 북마크 필수!
👉 다음 포스팅에서는 "자동 데이터 정렬 & 필터 기능"을 다뤄볼게요! 기대해주세요! 🚀
728x90
반응형
그리드형
댓글