Google 시트 설정 — 서비스 계정 및 JSON 키
SheetForge는 두 가지 모드로 Google 시트를 읽는다.
- ExportUrl은 자격 증명이 필요 없다: 링크로 시트를 공유하고, 각 탭의
#gid=값을 등록한 다음 임포트하면 된다. 읽기 전용이다. - SheetsApi는 Google 서비스 계정으로 인증하며, 그 밖의 모든 것 — 비공개 시트, 쓰기 반영(reflect), Push — 을 가능하게 한다.
이 페이지는 SheetsApi 설정을 처음부터 끝까지 안내한다 — 서비스 계정 생성, JSON 키 다운로드, 스프레드시트를 그 계정과 공유하기, 그리고 SheetForge가 그 키를 가리키게 하기까지. Google Cloud 사전 경험은 전혀 필요 없다 — 모든 단계는 웹 브라우저 안에서 이루어지며 비용은 전혀 들지 않는다.
전체 흐름:
- Google Cloud 프로젝트를 생성한다.
- 그 안에서 Google Sheets API를 활성화한다.
- 서비스 계정을 생성한다.
- 계정의 JSON 키를 다운로드한다.
- 스프레드시트를 그 계정의 이메일 주소와 공유한다.
- SheetForge가 그 키를 가리키게 한다.
1. Google Cloud 프로젝트 생성
- console.cloud.google.com을 열고 Google 계정으로 로그인한다 — 스프레드시트를 소유한 계정일 필요는 없다. 개인 계정은 항상 동작한다. 일부 회사의 Google Workspace 조직은 정책으로 서비스 계정 키 다운로드를 비활성화하는데, 이 경우 4단계가 조직 정책 에러로 실패한다(아래 "문제가 발생했다면" 참고). 처음 방문하면 콘솔에 도달하기 위해 서비스 약관 동의 프롬프트를 수락해야 한다.
- 상단 바에서 프로젝트 선택기(Google Cloud 로고 옆의 드롭다운)를 클릭한 다음 New project를 클릭한다.
- 아무 이름이나 입력하고(예:
sheetforge-sheets) Create를 클릭한다. organization과 location은 기본값 그대로 둔다. - "project created" 알림이 나타나면, 선택기에서 새 프로젝트를 선택한다. 아래의 모든 과정은 이 프로젝트 안에서 이루어지므로, 계속 선택된 상태를 유지해야 한다.
프로젝트는 API 설정을 담는 컨테이너일 뿐이다. 생성은 무료이며, 이 가이드에서의 Sheets API 사용에도 비용이 들지 않는다.
2. Google Sheets API 활성화
- 왼쪽 메뉴(☰)를 열고 APIs & Services ▸ Library로 이동한다.
- Google Sheets API를 검색해 결과를 연다.
- Enable을 클릭한다. 버튼에 Manage라고 쓰여 있다면 API가 이미 활성화된 것이다 — 할 일이 없다.
3. 서비스 계정 생성
서비스 계정은 자신만의 이메일 주소를 가진 기계 신원이다. SheetForge는 이 신원으로 로그인한다 — 사용자의 개인 Google 비밀번호는 전혀 관여하지 않는다.
- APIs & Services ▸ Credentials로 이동한다.
- + Create credentials ▸ Service account를 클릭한다.
- 이름을 입력한다(예:
sheetforge-reader). 계정 ID는 자동으로 채워진다. Create and continue를 클릭한다. - "Grant this service account access to project"와 "Grant users access" 단계는 선택 사항이다 — 둘 다 건너뛰고 Done을 클릭한다. 스프레드시트에 대한 접근 권한은 프로젝트 역할이 아니라 시트를 공유하는 것(5단계)으로 부여된다.
- 콘솔이 OAuth consent screen 설정을 제안하더라도 무시한다 — 서비스 계정은 이를 사용하지 않는다.
4. JSON 키 다운로드
- Credentials 페이지로 돌아가서, 방금 생성한 서비스 계정을 클릭한다("Service accounts" 아래).
- Keys 탭을 연다.
- Add key ▸ Create new key를 클릭하고, JSON을 선택한 다음 Create를 클릭한다.
- 브라우저가
sheetforge-sheets-1a2b3c.json과 같은 이름의 파일을 다운로드한다. 이것이 유일한 사본이다 — Google은 재다운로드를 위해 이를 보관하지 않는다. 파일을 잃어버렸다면, Keys 탭에서 그 키를 삭제하고 새로 생성하라.
이 파일을 비밀번호처럼 다루어라:
- Unity 프로젝트와 저장소 바깥의 어딘가로 옮긴다. 예:
C:/keys/sheetforge.json. - 결코
Assets/아래에 두지 마라 — 그 안의 모든 것은 프로젝트와 함께 커밋되며, 우연한 참조(또는Resources/StreamingAssets폴더)가 이를 빌드로 실어 나를 수 있다. - 키가 유출되면, Keys 탭에서 삭제하고(즉시 폐기된다) 새로 생성한다.
5. 스프레드시트를 서비스 계정과 공유
키만으로는 아무 권한도 주어지지 않는다. 서비스 계정은 자신과 명시적으로 공유된 시트만 읽을 수 있다 — 사람인 협업자와 정확히 동일하다.
- 다운로드한 JSON 파일을 아무 텍스트 에디터로 열고
client_email값을 복사한다.sheetforge-reader@sheetforge-sheets.iam.gserviceaccount.com과 같은 형태다. - Google Sheets에서 스프레드시트를 열고 Share를 클릭한다.
- 주소를 붙여넣고 역할을 선택한다:
- 임포트만 한다면 Viewer로 충분하다.
- 쓰기 반영 — 작성 reflect와 Push — 에는 Editor가 필요하다.
- "Notify people"를 끄고(그 주소에는 받은편지함이 없다) 확인한다.
- Google이 조직 바깥으로 공유한다고 경고하더라도 확인을 진행한다 — 서비스 계정은 어떤 조직에도 속하지 않는다.
이 단계를 건너뛰는 것이 가장 흔한 설정 실수다 — 그러면 키가 아무리 정확해도 모든 요청이 권한 에러로 실패한다.
6. SheetForge가 키를 가리키게 하기
- 임포트 설정 에셋에서, source를 GoogleSheet로, access mode를 SheetsApi로 설정한다.
spreadsheetId에 시트 URL의 긴 ID를 채운다:https://docs.google.com/spreadsheets/d/<this part>/edit.- SheetForge에게 키 파일의 위치를 알려준다. 두 가지 방법 중 하나로:
- 권장 — 환경 변수. **
SHEETFORGE_SHEETS_KEY**를 JSON 파일의 절대 경로로 설정한다. 각 개발자가 자신의 것을 설정하며, 어떤 경로도 저장소에 들어가지 않고, 설정 필드보다 우선한다.- Windows에서는 터미널에서
setx SHEETFORGE_SHEETS_KEY "C:\keys\sheetforge.json"을 실행한 다음 Unity 와 Unity Hub를 재시작한다(이미 실행 중인 프로세스는 예전 환경을 그대로 유지한다). - macOS/Linux에서는 셸 프로필에서 export하고 그 셸에서 Unity를 시작하거나, macOS에서는
launchctl setenv를 사용한다.
- Windows에서는 터미널에서
- 또는 — 설정 필드.
serviceAccountKeyPath에 경로를 넣되, 저장소 바깥을 가리키게 한다.
- 권장 — 환경 변수. **
- Tools ▸ SheetForge ▸ 데이터 스튜디오에서 ↓ 시트에서 가져오기를 누른다. 성공한 리포트는 전체 체인 — 프로젝트, API, 계정, 공유, 키 — 이 동작하고 있다는 뜻이다.
문제가 발생했다면
- 권한 에러(
PERMISSION_DENIED/ 403): 시트가client_email주소와 공유되지 않은 것이다(5단계) — ID는 실제 스프레드시트를 가리키지만 서비스 계정이 볼 수 없다. Requested entity was not found(404):spreadsheetId가 잘못된 것이다 — 시트 URL에서/d/와/edit사이의 부분을 정확히 복사하라.- "Service account key creation is disabled" / 4단계에서의 조직 정책 에러: 사용자의 Google Workspace 조직이
iam.disableServiceAccountKeyCreation을 강제하고 있다. 관리자에게 이 프로젝트에 대한 키 생성을 허용해 달라고 요청하거나, 개인 Google 계정으로 프로젝트를 생성한다 — 시트를 누가 소유했든, 그 프로젝트의 서비스 계정과 스프레드시트를 공유할 수 있다. - "Google Sheets API has not been used in project … or it is disabled": 키를 발급한 프로젝트에서 API가 활성화되지 않은 것이다(2단계) — 다른 프로젝트가 아니라 그 프로젝트에서 활성화하라. 방금 활성화한 API는 전파되기까지 몇 분이 걸릴 수 있다.
- 키 파일을 찾을 수 없음: 경로에 오타가 있거나, 환경 변수가 생기기 전에 Unity가 시작된 것이다 — 변수를 설정한 다음 Unity와 Unity Hub를 재시작하라.
- 키가 유출되었거나 분실됨: 서비스 계정의 Keys 탭에서 삭제하고, 새 JSON 키를 생성한 다음 파일을 교체하라. 그 밖의 어떤 것도 바뀌지 않는다 — 이메일 주소와 시트 공유는 그대로 유효하다.
관련 페이지
- 소스, 내보내기 및 Push — 두 Google 모드를 나란히 비교, gid 맵, Push 안전장치
- 시작하기 — 설정 에셋과 첫 임포트
- FAQ 및 문제 해결 — Google 관련 답변