구글 스프레드시트 시트 이름 추출, Apps Script로 자동 목록 만들기와 오류 해결
구글 스프레드시트에서 시트 이름을 동적으로 추출하여 목차(메뉴) 시트를 만들거나 특정 인덱스의 시트명을 셀에 표시하는 방법을 정리합니다. 이 가이드는 Apps Script로 사용자 정의 함수를 만들어 현재 활성 시트 이름을 불러오거나 전체 시트 목록을 세로로 출력하는 기본 코드, 실제로 자주 발생하는 "제목 추출 실패" 원인과 해결책(함수 인식 오류, 권한 문제, 자동 갱신 미구현)까지 다룹니다. 또한 메뉴 시트에 번호·하이퍼링크를 자동으로 생성하는 고급 예제와 자동화(트리거) 팁도 포함되어 있어 실무에서 바로 적용할 수 있습니다.
구글 스프레드시트 시트 이름 자동 추출 2026 최신 방법
핵심 정리: 무엇을 어떻게 만들 수 있나
이 섹션에서는 구현 가능한 주요 기능을 간단히 나열합니다.
- 현재 활성 시트의 이름을 셀에 표시(예: =GetSheetName())
- 스프레드시트 내 전체 시트 이름을 세로 목록으로 출력(예: =GetSheetNames())
- 인덱스 번호로 특정 시트 이름을 반환(예: =GetSheetByIndex(2))
- 목차(메뉴) 시트에 번호·이름·하이퍼링크 자동 생성 및 트리거 기반 자동 갱신
- 실패 원인 진단: #NAME? 오류, 권한 미허용, 자동 갱신 미작동 등
기본 코드 예제 — 현재 활성 시트 이름
Apps Script 편집기(확장 프로그램 > Apps Script)에 아래 코드를 붙여넣고 저장한 뒤 스프레드시트에서 =GetSheetName()을 입력하면 현재 활성 시트의 이름을 반환합니다.
function GetSheetName() {
return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}
사용 팁: 코드 저장 후 스프레드시트를 새로고침(Ctrl+R)해야 함수가 인식되지 않는 경우가 줄어듭니다.
전체 시트 목록을 세로로 출력하는 함수
스프레드시트 내 모든 시트명을 세로 배열로 출력하려면 다음 함수를 사용합니다. 셀에 =GetSheetNames()를 입력하면 작동합니다.
function GetSheetNames() {
var arrName = [];
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i = 0; i < sheets.length; i++) {
arrName.push([sheets[i].getName()]);
}
return arrName; // 2차원 배열로 반환하면 세로 목록으로 표시
}
주의: 반환값은 2차원 배열이어야 시트에서 세로 목록으로 표시됩니다.
특정 인덱스의 시트 이름 가져오기 (오류 처리 포함)
인덱스(1부터 시작)를 받아 해당 시트 이름을 반환하는 함수 예제입니다. 존재하지 않는 인덱스는 메시지를 반환합니다.
function GetSheetByIndex(i) {
try {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
if ((i > 0) && (i <= sheets.length)) return sheets[(i - 1)].getName();
else return "시트가 없음 #";
} catch (err) {
return "#오류발생!";
}
}
실행·설정 방법 (빠른 단계별)
- 스프레드시트 상단 메뉴에서 확장 프로그램 > Apps Script를 선택(새 편집기 열림).
- 기본 제공되는 Code.gs에 코드를 붙여넣고 저장(Ctrl+S).
- 스프레드시트로 돌아가서 셀에 사용자 정의 함수 호출(예:
=GetSheetName()). - 첫 실행 시 권한 요청 팝업이 뜨면 허용해야 정상 동작함(계정 연결).
- 함수 저장 후 시트가 함수를 인식하지 못하면 새로고침(Ctrl+R) 또는 브라우저 재시작 권장.
자주 발생하는 오류와 해결 방법
실무에서 가장 빈번히 마주치는 문제들과 해결책입니다.
- #NAME? 오류
- 원인: 스크립트에 함수가 저장되지 않았거나, 대소문자 오타, 스프레드시트를 새로고침하지 않음.
- 해결: Apps Script에서 저장 후 스프레드시트 새로고침, 함수명 일치 확인(예: GetSheetName).
- 권한(Authorization) 오류
- 원인: Apps Script가 계정 권한을 요청했으나 허용하지 않음.
- 해결: 앱 스크립트 편집기에서 처음 실행 시 나오는 권한 허용 절차를 완료.
- 업데이트가 실시간 반영되지 않음
- 원인: 사용자 정의 함수는 시트 구조 변경(시트 추가/삭제)에 자동 반응하지 않을 수 있음.
- 해결: onEdit 또는 시간 기반 설치형 트리거로 자동 갱신 로직을 추가하거나, 사용자가 수동으로 새로고침/재입력.
- 스크립트 권한 범위 및 한계
- 참고: 일부 서비스는 사용자 인증이 필요하며, 사용자 정의 함수 내에서 셀 외부 상태를 변경하는 부작용은 제한됩니다. 복잡한 동작(다른 셀 변경 등)은 메뉴/트리거로 처리하세요.
고급 예제: 번호 + 이름 + 하이퍼링크로 메뉴 시트 생성
아래 스크립트는 '메뉴'라는 시트를 만들고, 모든 시트의 번호·이름·하이퍼링크를 생성합니다. 시트 이동용 하이퍼링크는 각 시트의 gid를 사용합니다.
function listSheetName() {
var spreadsheet = SpreadsheetApp.getActive();
var sheets = spreadsheet.getSheets();
var menuName = '메뉴';
var sht = spreadsheet.getSheetByName(menuName);
if (sht == null) sht = spreadsheet.insertSheet(menuName);
// 기존 내용 초기화
sht.clearContents();
for (var i = 0; i < sheets.length; i++) {
var name = sheets[i].getSheetName();
var gid = sheets[i].getSheetId(); // 시트 고유 ID
// 메뉴 시트의 A열: 번호, B열: 하이퍼링크(=HYPERLINK)
sht.getRange(i + 1, 1).setValue(i + 1);
// HYPERLINK("#gid=123456", "시트명")
var formula = '=HYPERLINK("#gid=' + gid + '", "' + name + '")';
sht.getRange(i + 1, 2).setFormula(formula);
}
}
실행: Apps Script 편집기에서 listSheetName()을 직접 실행하거나, 메뉴에 연결해서 사용합니다.
자동 갱신: 트리거(onEdit / 시간기반) 적용 예
시트 추가/삭제 시 목록을 자동으로 갱신하려면 설치형 트리거 또는 onEdit를 활용합니다. 간단한 onEdit 예시는 다음과 같습니다(편집 이벤트 발생 시 메뉴 시트를 업데이트하도록 listSheetName() 호출).
function onEdit(e) {
// 편집이 발생할 때마다 메뉴 갱신(빈번한 편집이 많은 경우 주의)
try {
listSheetName();
} catch (err) {
// 오류 무시 또는 로깅
}
}
더 안정적인 방법은 시간 기반 설치형 트리거(예: 5분/1시간 단위)로 listSheetName()을 정기 실행하는 것입니다(편집 트리거는 빈번한 호출로 한도에 걸릴 수 있음).
실전 팁 & 활용 사례
- 목차 시트를 이용해 팀원들이 빠르게 시트로 이동하도록 하이퍼링크 제공.
- 시트 개수를 자동으로 모니터링하려면
SpreadsheetApp.getActive().getNumSheets()사용. - 다른 시트에서 시트명 목록을 집계해 대시보드나 보고서 자동 생성에 활용.
- Apps Script 편집기 UI는 주기적으로 업데이트되므로 메뉴 경로가 달라질 경우 "확장 프로그램 > Apps Script"를 찾아 실행.
마무리 및 권장 설정
요약하면, 구글 스프레드시트의 시트 이름을 동적으로 불러오려면 Apps Script 기반의 사용자 정의 함수가 가장 실용적입니다. 기본 코드는 간단하지만, 현장에서 흔히 마주치는 오류(함수 미인식, 권한, 자동 갱신 미작동)를 고려해 권한 승인 완료, 스크립트 저장 후 새로고침, 필요 시 트리거 설정을 반드시 수행하세요. 메뉴 시트에 번호·하이퍼링크를 추가하면 사용성도 크게 향상됩니다. 공식 문서를 참고해 권한 범위와 실행 한도를 확인한 뒤 적용하면 안정적으로 운영할 수 있습니다.