“잘 되던 구글 시트가 멈췄어요… 왜 이러죠?”
문제 상황
n8n에서 Google Sheets를 API로 연결해서 자동으로 데이터를 넣거나 수정하는 워크플로우를 만들었는데...
며칠 잘 작동하다가 갑자기 이런 에러가 나면서 멈춥니다:
처음에 로그인도 잘했고, 테스트도 통과했는데 왜 이런 일이 생길까요?
왜 연결이 끊길까?
문제의 핵심은 Google OAuth2의 토큰 만료 정책에 있습니다.
n8n이 Google API에 연결하는 방식
Access Token
: 구글 API를 호출할 때 사용하는 토큰 (1시간 유효)Refresh Token
: Access Token이 만료되면 이걸로 새로 발급받음
그런데 이 Refresh Token이 7일 후 자동 만료되는 경우가 있어요.
원인: OAuth 앱이 '테스트 중(Test)' 상태
Google Cloud에서 OAuth 설정을 처음 만들면 기본으로 “테스트 중” 상태입니다.
이 상태에서 연결하면 Google은 Refresh Token을 7일 뒤 자동으로 만료시킵니다.
즉, 로그인한 지 7일이 지나면 더 이상 구글 API를 사용할 수 없게 되고, n8n에서 오류가 발생하게 됩니다.
해결 방법 3가지
방법 1: OAuth 앱을 '운영중(Production)' 상태로 전환
- Google Cloud Console 접속
API 및 서비스 > OAuth 동의 화면
메뉴로 이동- 상태가 테스트 중이면 “앱 게시” 버튼 클릭
- n8n에서 Google Sheets Credential을 Re-authenticate (다시 로그인)
>> 이렇게 하면 Refresh Token이 더 이상 자동으로 만료되지 않습니다.
참고: 앱을 운영 상태로 게시하면 누구나 이 앱을 사용할 수 있게 됩니다.
방법 2: Google Workspace 사용자는 '내부앱' 설정
회사/기관용 Google 계정(Google Workspace)을 사용하는 경우:
OAuth 동의 화면 > 사용자 유형
을 "내부" 로 설정- 게시 없이도 Production과 같은 효과 (토큰 만료 없음)
방법 3: Service Account 사용
서버 간 자동화 작업 위주라면 Service Account 방식이 가장 안정적입니다.
- Google Cloud Console →
IAM 및 관리자 > 서비스 계정
→ 새 계정 생성 - JSON 키 파일 다운로드
- n8n에서 Google Sheets Credential 생성 시 "Service Account" 방식 선택 후 JSON 업로드
- Google Sheets 문서를 서비스 계정 이메일로 공유 (편집 권한)
>> 로그인 없이도 구글 시트를 사용할 수 있고, 토큰 만료 걱정도 없습니다.
꼭 확인하세요
- 한 Google 계정에서 refresh token을 100개 이상 발급받으면 이전 토큰이 자동 삭제됩니다.
- n8n이 설치된 서버/도커의 시간이 틀리면 토큰 만료 타이밍이 어긋나므로 시간 동기화(NTP) 도 체크하세요.
- 도커 사용 시
~/.n8n
폴더를 볼륨으로 마운트해서 자격 정보를 유지하세요.
정리 >> 상황별 추천 요약
상황 | 추천 방법 |
---|---|
개인 사용자이고 7일 뒤 연결이 끊김 | ✅ 앱을 Production으로 게시 |
회사 Google 계정을 사용 중 | ✅ 내부앱 설정 |
서버 간 자동작업 위주 | ✅ Service Account 사용 |
내 계획
며칠 더 이용해 보고 안정화 되어 있다면 Production으로 변경할 계획입니다.