Apps Script 트리거 설정: 매일 정해진 시간 자동 실행

읽는 시간
이 글의 목차
  • 목차
Apps Script 트리거 설정: 매일 정해진 시간 자동 실행

Apps Script 트리거 설정에서 '오전 9시~10시'를 고르면 함수는 매일 그 한 시간 안의 어느 시점에 실행됩니다. 9시 정각을 보장하는 기능은 아니라는 점만 받아들이면, 날짜 기록이나 데이터 정리처럼 매일 반복되는 작업은 시간 기반 트리거 하나로 사람 손을 떠나게 할 수 있습니다.

등록 방법은 두 가지입니다. 편집기 화면에서 클릭으로 추가하거나, 코드로 설치하거나. 아래에서는 같은 함수를 두 방법으로 등록하고 무엇이 다른지 비교합니다.

트리거 종류: 시간 기반, 편집, 폼 제출

시간 기반 트리거는 정기 실행에, 편집 트리거는 누군가 셀 값을 바꿨을 때, 폼 제출 트리거는 새 응답이 들어왔을 때 씁니다. 설치형 트리거는 만든 사람의 권한으로 실행되고 처음 한 번 승인이 필요합니다. 헷갈리기 쉬운 점 하나 더. 스크립트가 셀을 수정해도 편집 트리거는 다시 실행되지 않습니다.

앱스 스크립트 편집기가 처음이라면 구글 앱스 스크립트 사용법: 첫 자동화 따라하기에서 함수를 만들고 권한을 승인하는 과정부터 익히고 오세요.

예제 함수: 매일 날짜 한 줄 기록하기

개인 테스트용 시트를 만들고 확장 프로그램 → Apps Script에서 아래 코드를 저장합니다. recordDate는 첫 번째 시트에 날짜와 문구를 한 줄 추가하고, installDailyTrigger는 이 함수를 매일 9시대에 실행하도록 등록합니다. 유료 서비스나 API 키는 필요 없습니다.

function recordDate() {
  SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]
    .appendRow([new Date(), '데모 날짜 기록']);
}
function installDailyTrigger() {
  ScriptApp.getProjectTriggers()
    .filter(t => t.getHandlerFunction() === 'recordDate')
    .forEach(t => ScriptApp.deleteTrigger(t));
  ScriptApp.newTrigger('recordDate').timeBased()
    .atHour(9).everyDays(1).inTimezone('Asia/Seoul').create();
}

방법 1. 트리거 추가 화면에서 설정하기

편집기 왼쪽의 '트리거' 메뉴에서 '트리거 추가'를 누르고 다음처럼 고릅니다.

  • 실행할 함수: recordDate
  • 배포: Head
  • 이벤트 소스: 시간 기반
  • 트리거 유형: 일 단위 타이머
  • 시간: 오전 9시~오전 10시

시간대 표시가 서울로 되어 있는지 보고 저장합니다. 처음 저장할 때 승인 화면이 뜨면 본인이 쓴 코드인지, 어떤 권한을 요청하는지 확인한 뒤 진행하세요.

Apps Script 트리거 추가 창에서 recordDate 함수, 시간 기반, 일 단위 타이머, 오전 9시~10시를 선택한 화면
저장 직전의 트리거 추가 창. 함수, 이벤트 소스, 일 단위 타이머, 시간 범위가 선택돼 있다.

방법 2. 코드로 트리거 설치하기

함수 선택 칸에서 installDailyTrigger를 고르고 실행합니다. 이 코드는 recordDate에 걸린 기존 트리거를 먼저 지운 뒤 새로 하나를 만들기 때문에, 여러 번 실행해도 트리거가 겹쳐 쌓이지 않습니다. 같은 계정으로 방법 1에서 만든 recordDate 트리거도 이때 함께 정리됩니다. 다만 다른 사람이 같은 프로젝트에 만든 트리거까지 지우지는 못합니다.

코드로 설치한 뒤 Apps Script 트리거 목록에 시간 기반 recordDate 트리거 1개가 표시된 화면
코드 설치 뒤 트리거 목록에 시간 기반 recordDate 1개가 등록된 모습. 최종 실행이 '-'인 것은 아직 예약 시각이 오지 않았다는 뜻이다.

트리거 추가 화면과 코드 설치, 무엇이 다른가

비교 항목트리거 추가 화면코드 설치
설정 위치왼쪽 트리거 메뉴에서 클릭installDailyTrigger 실행
중복 방지목록을 보고 직접 확인기존 recordDate 트리거를 지우고 1개만 생성
시간대창에 표시된 시간대 확인inTimezone('Asia/Seoul')로 고정
다른 시트에 같은 예약같은 클릭을 반복코드를 복사해 한 번 실행
등록 확인두 방법 모두 트리거 목록에서 함수와 이벤트 종류를 확인. 최종 실행이 '-'면 아직 실행 전

트리거가 한두 개라면 화면에서 설정해도 충분합니다. 여러 파일에 같은 예약을 걸거나 중복 실행이 생기면 곤란한 작업이라면 코드 설치 쪽이 관리하기 편합니다.

트리거가 실행되지 않을 때 볼 곳

왼쪽 '실행' 메뉴에서 함수 이름, 상태, 오류 메시지를 확인하세요. 설치형 트리거가 실패하면 화면 팝업이 아니라 알림 메일로 전달될 수 있고, 알림을 받는 주기도 트리거 설정에서 고를 수 있습니다. 자주 나오는 원인은 권한 변경, 시트나 파일 삭제, 할당량 초과입니다.

9시 정각 마감 확인처럼 정확한 시각이 중요한 업무에는 최대 한 시간 가까이 차이가 날 수 있는 이 방식이 맞지 않습니다. 테스트가 끝난 데모 트리거는 목록에서 지워 두세요.

매일 실행을 실제 업무에 붙이기 전에

AI가 써 준 코드든 예제 코드든 운영 중인 파일에 바로 붙이지 말고, 개인정보가 없는 복사본에서 며칠 돌려 결과를 확인하세요. 날짜 기록이 매일 잘 쌓이는 걸 본 다음 주간보고 양식 엑셀 템플릿 같은 보고서 작업으로 넓히면 됩니다. 그때도 실행 권한과 중복 예약 여부를 먼저 확인하는 편이 안전합니다.

근거 문서: Google Apps Script 설치형 트리거 공식 문서.

댓글

이 블로그의 인기 게시물

챗GPT 엑셀 데이터 분석: 파일 올려 요약표 만드는 법

챗GPT 엑셀 프롬프트 모음: 수식·정리·오류 해결 예시

AI 보고서 작성 프롬프트: 주간보고 초안 템플릿