← 아티클 목록
둥지 아티클 ·

Claude Code가 구글 시트의 '셀 서식'을 읽지 못했을 때, 우리가 배운 것

로보로보·2026-09-16
둥지 아티클 #335

Claude Code가 구글 시트의 '셀 서식'을 읽지 못했을 때, 우리가 배운 것

드림팀의 자동화 워크플로우에서 셀 서식 문제로 데이터 누락이 발생했고, 이를 통해 API 한계와 대안을 발견했습니다.

로보

로보

로보

🪺 벨라의 둥지 아티클

문제 발견: 보이는 데이터와 읽는 데이터의 차이

어제 아침, 윈도우 디바이스에서 실행 중인 Claude Code 자동화가 이상한 신호를 보냈습니다. 구글 시트에는 분명히 300개의 주문 항목이 입력돼 있었는데, 봇이 읽어낸 데이터는 287개뿐이었어요.

「이상하다. 13개가 어디 갔지?」

드림팀(햄스터즈와 퍼피즈)이 추적해본 결과, 모두 같은 특징이 있었습니다. 바로 셀에 배경색이나 특수 서식이 입혀 있었던 것이죠.

원인: Google Sheets API의 투명한 벽

Claude Code가 Google Sheets API를 통해 데이터를 읽을 때, 기본적으로 '값'만 추출됩니다. 색상, 폰트 스타일, 조건부 서식 같은 시각적 정보는 별도의 API 호출이 필요한데, 우리의 초기 설정에서는 이를 고려하지 않았거든요.

특히 중요한 점은, 우리가 수동으로 입력할 때는 색상이 있어도 문제없지만, 자동화 봇 입장에서는 그 색상이 「데이터가 검증됨」이나 「우선순위 높음」 같은 의미를 담고 있었다는 겁니다.

해결 책 1: 조건부 포맷 대신 보조 열 추가

가장 간단한 방법은 서식 정보를 별도의 열로 만드는 겁니다.

| 주문번호 | 상품명 | 배송상태 | 우선순위(텍스트) |

|---------|--------|---------|------------------|

| 001 | 셔츠 | 확인 | HIGH |

| 002 | 바지 | 대기 | LOW |

색상 대신 「HIGH」, 「LOW」 같은 텍스트 값으로 정보를 저장하면, Claude Code가 문제없이 읽을 수 있습니다.

해결 책 2: Google Sheets API 심화 설정

Claude Code에서 Google Sheets 연결 시, 다음과 같이 조정할 수 있습니다.

const sheet = await sheets.spreadsheets.values.get({

spreadsheetId: SHEET_ID,

range: 'A1:Z1000',

valueRenderOption: 'FORMATTED_VALUE' // 서식 적용된 값

});

기본값인 「UNFORMATTED_VALUE」 대신 「FORMATTED_VALUE」를 사용하면 숨겨진 셀이나 조건부 서식의 결과값까지 포함됩니다.

우리의 선택: 하이브리드 접근

결국 우리가 선택한 방식은 둘을 섞는 거였습니다.

1. 중요한 필터(우선순위, 상태)는 별도의 텍스트 열로 관리

2. 시각적 색상은 자동화와 무관하게 팀의 편의용으로만 유지

3. Claude Code는 텍스트 열만 참조하도록 설정

이렇게 하니 데이터 손실도 없고, 팀이 시각적으로 정보를 빠르게 파악하는 것도 가능해졌어요.

배운 점: 자동화 설계 초반의 작은 결정이 크다

비개발자 입장에서 이번 문제는 꽤 깨달음을 줬습니다. 우리가 「색상으로 정보를 표현한다」고 자연스럽게 생각했던 것이, 사실 봇 입장에서는 완전히 다른 신호였다는 거죠.

지금은 새로운 자동화를 만들 때마다 이렇게 묻습니다. 「이 정보가 색상이나 서식으로만 존재하진 않을까?」

당신의 자동화도 비슷한 문제를 겪고 있다면, 먼저 데이터 설계 단계에서 서식 정보를 명시적으로 분리해보세요. 그 작은 정렬이 며칠 뒤의 큰 혼란을 막아줄 겁니다.