1. 문제 현상
- DocumentApp.openById() 실행 시 "액세스할 수 없는 문서입니다. 나중에 다시 시도해 주세요." 에러 발생.
- 파일은 분명 생성되었고, 브라우저에서 수동으로 열면 잘 열리는데 스크립트(코드)로만 접근이 안 됨.
- 특히 공유 드라이브(Shared Drive) 환경에서 빈번하게 발생.
2. 주요 원인
- 파일 형식 불일치 (가장 빈번): 템플릿 파일이 구글 문서 포맷이 아닌 MS Word(.docx) 형식인 경우. 구글 문서 API는 순수 구글 문서 포맷만 제어 가능함.
- 권한 전파 지연 (Indexing Delay): 공유 드라이브의 보안 정책상, 파일이 생성된 직후 편집 권한이 모든 구글 서버에 전파되는 데 시간이 걸림 (수 초 ~ 수 분).
- 서비스 충돌: DocumentApp이라는 고전적인 라이브러리가 공유 드라이브의 강화된 보안 정책을 통과하지 못함.
3. 해결 단계 (Checklist)
✅ Step 1. 파일 형식 확인 및 변환
- 드라이브 아이콘이 파란색 **'W'**라면 Word 파일입니다.
- 해결: 파일을 열고 **[파일] > [Google 문서로 저장]**을 클릭해 순수 구글 문서로 변환한 뒤, 그 새로운 ID를 사용하세요.
✅ Step 2. 대기 로직 추가 (Utilities.sleep)
- 파일 복사 직후 바로 열지 말고 서버가 인지할 시간을 줍니다.
- Utilities.sleep(2000); // 2초 대기
✅ Step 3. 최후의 수단: Google Docs API 직접 호출 (추천)
- DocumentApp을 쓰지 않고 서버 간 통신(API)을 통해 문서를 직접 수정하는 방식입니다. 이 방식은 공유 드라이브 보안망을 가장 잘 우회합니다.
- 방법:
- 스크립트 에디터 [서비스]에서 Google Docs API 추가.
- DocumentApp.openById() 대신 Docs.Documents.batchUpdate() 사용.
4. 성공한 우회 전략 코드 (Snippet)
// DocumentApp 없이 직접 치환하는 API 방식
const requests = [
{
replaceAllText: {
replaceText: "치환될내용",
containsText: { text: "{{키워드}}", matchCase: false }
}
}
];
// Docs API를 호출하여 문서를 열지 않고 수정
Docs.Documents.batchUpdate({ requests: requests }, docId);
💡 정리 한줄 평: "공유 드라이브에서 문서가 안 열리면 파일이 .docx인지 확인하고, 그래도 안 되면 Docs API로 들이받자!"
'개인기록 > 개발공부' 카테고리의 다른 글
| Tailwind CSS 설치 시 v3는 잘 되는데, v4는 왜 오류가 날까? (3) | 2025.07.12 |
|---|---|
| npm start 명령어, 정확히 뭘 하는 걸까? (3) | 2025.07.11 |
| React 설치 방식 3가지 비교 가이드 (0) | 2025.07.10 |
| MVC(Model-View-Controller) 모델이란? – 웹 개발 구조의 기본 (1) | 2025.05.10 |
| Tailwind CSS 설정 중 만난 오류들, 이렇게 해결했어요! (0) | 2025.05.10 |