Google Drive API를 스크립트로 자동화할 때는 두 가지 핵심 문제를 해결해야 합니다. 첫째는 스크립트가 Drive에 접근할 수 있는 인증 자격을 설정하는 것이고, 둘째는 동기화할 정확한 대상 폴더를 찾는 방법입니다.
인증 문제는 서비스 계정을 사용하여 해결합니다. 서비스 계정의 JSON 키 파일을 생성한 후, 이 값을 GitHub Secrets와 같은 환경 변수에 저장합니다. 스크립트는 이 키를 사용해 바로 액세스 토큰을 생성할 수 있어, 사용자 동의나 리프레시 토큰 관리가 필요 없습니다. 중요한 점은, 서비스 계정이 특정 Drive 폴더에 접근하려면 해당 폴더를 서비스 계정 이메일(...@...gserviceaccount.com)과 공유해야 한다는 것입니다. IAM에서 프로젝트 권한을 부여하더라도 Drive 접근 권한은 별도로 공유해야 합니다.
대상 폴더를 찾는 방법은 크게 두 가지로 나뉩니다. 첫 번째는 폴더 ID로 명시적으로 지정하는 방법입니다. 각 대상 폴더의 고유 Drive ID를 미리 알아내 환경 변수에 하드코딩합니다. 이 방법은 탐색 로직이 필요 없어 코드가 단순하고, 폴더 이름이 바뀌거나 중복되어도 정확한 폴더를 찾을 수 있습니다. 단점은 폴더 구조가 바뀔 때마다 환경 변수를 수동으로 업데이트해야 한다는 점입니다.
두 번째는 이름으로 유연하게 탐색하는 방법입니다. 서비스 계정이 접근 가능한 루트 폴더에서 시작해, 예상 폴더 이름을 재귀적으로 검색합니다. 이 방법은 폴더 ID를 미리 알 필요가 없고, 폴더가 이동해도 이름만 같으면 자동으로 따라갈 수 있습니다. 반면, 같은 이름의 폴더가 여러 개 있으면 잘못된 폴더를 대상으로 할 수 있으며, 탐색에 실패하면 스크립트가 멈출 수 있고, API 호출이 약간 더 필요합니다.
실전에서는 서비스 계정 인증을 사용하고 반드시 대상 폴더를 서비스 계정과 공유하는 것이 기본입니다. 탐색 방법은 프로젝트 단계에 따라 선택하는 것이 합리적입니다. 시작 단계에서는 폴더 구조가 안정되지 않았을 때 유연성이 높은 이름 기반 탐색이 적합합니다. 폴더 구조가 안정되거나 운영 부담이 커지면 폴더 ID 지정 방식으로 전환할 수 있습니다. 동기화 방식의 경우, 매일 1회 실행되는 cron 작업 같은 시나리오에서는 구현을 단순하게 유지하기 위해 전체 스캔을 선택할 수 있습니다. changes.list API를 이용한 증분 동기화보다 구현이 쉽고, 일일 실행에서는 API 할당량 내에서 처리 가능하기 때문입니다. 필요하다면 나중에 증분 방식으로 발전시킬 수 있습니다.
요약하자면, 서비스 계정 공유를 먼저 확인하고, 탐색 방법은 프로젝트의 단계와 운영 편의성에 따라 선택하는 것이 핵심입니다.