path
Jin's Lab
코드로 실험하고 기록하는 개발 일지 · J.Lab
커리어 성장 자기 계발 방향성 탐색

Jin's Lab

코드로 실험하고 기록하는 개발 일지. 커리어와 삶의 방향을 탐색하며 기록하는 공간입니다

AutomationTroubleshooting

Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계

J.Lab · 2026-06-27

J.Lab의 자동화, 뜻밖의 복병을 만나다: Google Apps Script 실행 시간 6분 제한 극복기

안녕하세요, J.Lab입니다. 요즘 제 블로그 'IssueLog'가 꾸준히 자동 포스팅되고 있는 것, 혹시 알고 계셨나요? 하루에 3건씩 새로운 IT 이슈를 자동으로 수집하고 게시하는 작은 프로젝트인데, 나름 뿌듯하게 지켜보고 있었습니다. 그런데 최근 들어 이상한 점을 발견했어요. 분명 하루 3건 발행 예정인데, 왜 항상 1건만 올라오는 걸까?

처음에는 단순히 네트워크 문제겠거니, 아니면 스크립트가 중간에 뭔가 에러를 뿜었겠거니 대수롭지 않게 생각했습니다. 하지만 이런 현상이 며칠 연속으로 이어지자, 이건 단순한 문제가 아니라는 확신이 들었죠. 결국, J.Lab의 주말 저녁은 이 미스터리를 파헤치는 디버깅 파티로 바뀌었습니다.

컴퓨터 화면에 코드와 오류 메시지가 가득하고, 사람이 의아한 표정으로 이를 바라보는 모습. 디버깅 상황을 나타냅니다.

첫 번째 삽질: 로그를 파고들다, GAS 타임아웃의 흔적

가장 먼저 Google Apps Script(GAS)의 실행 로그를 확인해봤습니다. 로그는 개발자의 친구이자 유일한 증거 아니겠어요? 그리고 놀랍게도, 로그에는 예상치 못한 오류 메시지가 가득했습니다. 바로 'Execution failed: Exceeded maximum execution time'이라는 문구였죠.

아, 'GAS 타임아웃' 문제였구나. J.Lab은 머리를 한 대 맞은 기분이었습니다. GAS 스크립트가 실행될 수 있는 최대 시간을 초과해서 강제로 종료되었다는 뜻인데, 분명 스크립트 자체의 복잡도는 그리 높지 않았거든요. 혹시나 해서 구글링을 좀 해보니, GAS는 기본적으로 실행 시간이 6분으로 제한되어 있다는 사실을 다시금 깨달았습니다. 물론 G Suite 계정은 더 길지만, 일반 Gmail 계정은 얄짤없이 6분이죠.

Gmail 계정의 함정: 랜덤 딜레이, 양날의 검이 되다

그럼 왜 6분 제한에 걸렸을까? 제 스크립트는 3건의 포스팅을 발행하기 위해 각 포스팅 사이에 '랜덤 딜레이'를 설정해 두었습니다. 봇처럼 보이지 않기 위해 0분에서 30분 사이의 무작위 시간을 기다리도록 설계한 것이죠. 이게 문제의 원흉이었습니다.

만약 첫 번째 포스팅 후 20분의 딜레이가 걸리고, 두 번째 포스팅 후 또 20분의 딜레이가 걸린다면, 벌써 40분이라는 시간이 흐르게 됩니다. 6분이라는 Google Apps Script 실행 시간 제한을 가볍게 넘겨버리는 거죠. IssueLog 프로젝트가 일반 Gmail 계정으로 실행되고 있었으니, 이 제한은 더욱 치명적이었습니다. 랜덤 딜레이가 저를 구해주기는커녕, 제 발목을 잡고 있었던 겁니다. 약 80%의 스크립트가 이 딜레이 때문에 6분을 초과하여 타임아웃 되는 상황이었던 거죠.

디지털 시계가 시간을 나타내며 제한 시간에 다다르는 모습을 시각적으로 보여줍니다. 6분 타임아웃의 임박함을 상징합니다.

문제 해결: 딜레이를 현명하게 조절하다

원인을 파악했으니 해결책은 의외로 간단했습니다. 바로 랜덤 딜레이 시간을 대폭 축소하는 것이었죠. 기존의 '0분 ~ 30분' 딜레이를 '0분 ~ 2분'으로 과감하게 줄였습니다. 2분 정도의 짧은 딜레이라면, 3번의 포스팅을 모두 처리하더라도 최대 6분(첫 포스팅 시간 + 2분 + 2분)을 넘지 않을 것이라고 판단했죠.

이 변경 사항을 적용하고 스크립트를 재배포했습니다. 그리고 다음 날부터 IssueLog는 완벽하게 하루 3건의 포스팅을 성공적으로 게시하기 시작했습니다. 혹시 모를 상황에 대비해 다른 자동화 프로젝트인 'KidStory'와 'Jin's Lab'에도 동일하게 랜덤 딜레이를 0~2분으로 축소하는 조치를 취했습니다. 작은 변화였지만, 안정성 면에서는 엄청난 개선이었습니다.

기어가 원활하게 돌아가고 데이터가 빠르게 흐르며, 모든 자동화 프로세스가 성공적으로 작동하는 모습. 문제 해결 후의 효율성을 나타냅니다.

마치며: J.Lab의 작은 깨달음과 다음 계획

이번 경험을 통해 'Google Apps Script 실행 시간 제한'과 'Gmail 계정 제한'이라는 숨겨진 함정을 다시 한번 절감했습니다. 그리고 랜덤 딜레이와 같은 보안(?) 장치가 때로는 서비스의 안정성을 저해할 수도 있다는 사실을 깨달았죠. 항상 최악의 시나리오를 고려하고, 내가 사용하는 플랫폼의 제약을 정확히 이해하는 것이 얼마나 중요한지 되새기게 됩니다.

이제 IssueLog는 문제없이 잘 돌아가지만, J.Lab은 여기서 멈추지 않을 겁니다. 다음에는 스크립트 타임아웃이나 예상치 못한 오류 발생 시 사용자에게 알림을 보내는 기능, 그리고 보다 유연하게 작업을 재개할 수 있는 에러 핸들링 로직을 추가할 계획입니다. 여러분도 자동화 스크립트를 만들 때 저와 같은 삽질을 겪지 않도록, 이 경험이 작은 도움이 되었으면 좋겠습니다!

AutomationTroubleshooting CodeLog ExecutionLimit GASTimeout GmailRestrictions GoogleAppsScript RandomDelay
← 이전 글
최근 게시물
다음 글 →
이전 게시물
소개
path
J.Lab

커리어와 삶의 방향을 탐색하며
기록하는 공간입니다

카테고리
403 Forbidden Error 1 AIContentGeneration 1 AIImageGeneration 1 API Automation 1 api-troubleshooting 1 AppsScript 1 AutomationTroubleshooting 1 BlogAutomation 2 BloggerAPI 1 BloggerCustomization 2 BloggerTemplateEditing 1 BloggerThemeCustomization 1 BloggerXMLStructure 1 BloggingTools 1 BWidgetBIncludable 1 CardClickHandler 1 CodeLog 1 CSSOverlay 1 DatabaseDesign 1 DeveloperJourney 2 DevJourney 1 ExecutionLimit 1 FaviconEmbedding 1 FluxModel 1 FreeAIImage 1 FrontEndDev 1 GAS Blogger API 1 gas-automation 1 GASTimeout 1 GCP Project Linkage 1 GeminiAPI 1 GmailRestrictions 1 Google Apps Script 1 google-apps-script 1 GoogleAppsScript 2 HTMLWidgetBlogger 1 HuggingFace 1 HuggingFaceAPI 1 jlab-codelog 1 JLabDevLog 1 notion-api 1 notion-database 1 NotionAutomation 1 NotionIntegration 1 OAuth Scope 1 pagination 1 PollinationsAI 1 PositionAbsolute 1 RandomDelay 1 SidebarLinks 1 TechJournal 1 WebAccessibility 1 WebDevelopmentTips 1 WebDevJourney 1 WorkflowAutomation 1 XMLSpecialCharacters 1
인기 글
Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략
Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략
부업 블로그 자동 발행 시스템 처음부터 만든 후기
부업 블로그 자동 발행 시스템 처음부터 만든 후기
Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
블로그 이미지 자동화 삽질기 — HuggingFace로 시작해 Pollinations로 갈아탄 이야기
블로그 이미지 자동화 삽질기 — HuggingFace로 시작해 Pollinations로 갈아탄 이야기
Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
Notion API page_size 함정 — 우선순위 항목이 조회에서 빠지는 이유와 해결법
Notion API page_size 함정 — 우선순위 항목이 조회에서 빠지는 이유와 해결법
GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
다른 블로그
IssueLog
IssueLog
issuelog.jinbytes.com
KidStory
KidStory
kidstory.jinbytes.com
IT Story
IT Story
jinbytes.com
© Jin's Lab · J.Lab · All Rights Reserved
jinbytes.com · Powered by Blogger