Apps Script 편집기 대신 터미널에서 Google Apps Script 프로젝트를 개발하고 관리하려면 오픈소스 도구 clasp를 사용하세요.
clasp Codelab에서는 모든 clasp 기능을 간략하게 설명합니다.
기능
clasp에는 다음 기능이 포함됩니다.
로컬로 개발
clasp를 사용하면 Apps Script 프로젝트를 로컬에서 개발할 수 있습니다. 자체 컴퓨터에서 코드를 작성하고 완료되면 Apps Script에 업로드합니다. 기존 Apps Script 프로젝트를 다운로드하여 오프라인으로 수정할 수도 있습니다. Apps Script 프로젝트를 빌드할 때 git와 같은 즐겨 사용하는 개발 도구를 사용하세요.
배포 버전 관리
프로젝트의 여러 배포를 만들고, 업데이트하고, 볼 수 있습니다.
구조 코드
clasp를 사용하면 코드를 디렉터리로 정리할 수 있으며, script.google.com에 업로드할 때 디렉터리가 유지됩니다. 예를 들면 다음과 같습니다.
# On script.google.com: ├── tests/slides.gs └── tests/sheets.gs # Locally: ├── tests/ │ ├─ slides.gs │ └─ sheets.gs
프로젝트 유형
clasp를 사용하여 독립형 스크립트 프로젝트와 컨테이너 바운드 스크립트 프로젝트를 모두 관리할 수 있습니다.
독립형 프로젝트
독립형 프로젝트는 Google Drive에 별도의 파일로 표시됩니다. clasp create 명령어를 사용하여 새 독립형 스크립트를 만들 수 있습니다.
컨테이너 바운드 프로젝트
컨테이너에 바인드된 프로젝트는 Google Docs, Sheets, Slides 또는 Google Forms 파일에 연결됩니다. clasp create 명령어를 사용하여 새 파일에 연결된 새 컨테이너 바운드 스크립트를 만들 수 있습니다. --parentId 플래그를 사용하여 기존 파일에 새 스크립트를 연결할 수도 있습니다.
기타 프로젝트 유형
clasp는 웹 앱 및 API용 스크립트 생성도 지원합니다.
요구사항
clasp는 Node.js로 작성되며 npm 도구를 사용하여 배포됩니다. clasp를 사용하기 전에 Node.js 버전 20.0.0 이상이 설치되어 있어야 합니다.
Node.js를 설치하려면 관리자 권한이 필요합니다.
설치
Node.js를 설치한 후 다음 npm 명령어를 사용하여 clasp를 설치합니다.
npm install @google/clasp -g
설치 후 컴퓨터의 디렉터리에서 clasp 명령어를 사용합니다.
clasp 사용
clasp를 사용하여 명령줄에서 다양한 작업을 처리합니다. 이 섹션에서는 clasp로 개발할 때 사용할 수 있는 일반적인 작업을 설명합니다.
로그인
이 명령어는 Google 계정의 Apps Script 프로젝트 관리에 로그인하고 권한을 부여합니다. 실행되면 Apps Script 프로젝트가 저장된 Google 계정에 로그인하라는 메시지가 표시됩니다.
clasp login
로그아웃
이 명령어는 명령줄 도구에서 로그아웃합니다. clasp login를 사용하여 다시 로그인하여 Google로 다시 인증한 후 clasp를 계속 사용하세요.
clasp logout
새 Apps Script 프로젝트 만들기
이 명령어는 현재 디렉터리에 새 스크립트를 만들며 스크립트 제목은 선택사항입니다.
clasp create [scriptTitle] [--type <projectType>] [--parentId <parentId>]
이 명령어는 다음과 같은 선택적 매개변수를 사용합니다.
scriptTitle: 스크립트 프로젝트의 제목입니다.--type <projectType>: 만들 프로젝트의 유형입니다. 허용되는 값은standalone,docs,sheets,slides,forms,webapp,api입니다.--parentId <parentId>: 새 스크립트 프로젝트가 바인드되어야 하는 기존 Google Drive 파일(Docs, Sheets, Slides 또는 Forms)의 ID입니다.
이 명령어는 현재 디렉터리에 다음 두 파일도 만듭니다.
- 스크립트 ID를 저장하는
.clasp.json파일 - 프로젝트 메타데이터가 포함된
appsscript.json프로젝트 매니페스트 파일
기존 프로젝트 클론
이 명령어는 현재 디렉터리에 기존 프로젝트를 클론합니다. 스크립트를 만들거나 Google 계정과 공유해야 합니다. 스크립트 ID를 제공하여 클론할 스크립트 프로젝트를 지정합니다. 독립형 프로젝트와 컨테이너에 바인딩된 프로젝트를 모두 클론할 수 있습니다.
프로젝트의 스크립트 ID를 찾으려면 다음 단계를 따르세요.
- Apps Script 프로젝트를 엽니다.
- 왼쪽에서 프로젝트 설정 을 클릭합니다.
ID에서 스크립트 ID를 복사합니다.
clasp clone
스크립트 프로젝트 다운로드
이 명령어는 Google Drive의 Apps Script 프로젝트를 컴퓨터의 파일 시스템에 다운로드합니다.
clasp pull
스크립트 프로젝트 업로드
이 명령어는 컴퓨터의 스크립트 프로젝트 파일을 모두 Drive에 업로드합니다.
clasp push
프로젝트 버전 나열
이 명령어는 스크립트 프로젝트의 각 버전의 번호와 설명을 나열합니다.
clasp versions
게시된 프로젝트 배포
스크립트 프로젝트를 웹 앱, Google Workspace 부가기능 또는 실행 파일로 배포합니다. 스크립트 편집기, 프로젝트 매니페스트 또는 clasp를 사용하여 배포를 만듭니다.
clasp로 프로젝트를 배포하려면 먼저 Apps Script 프로젝트의 변경 불가능한 버전을 만듭니다. 버전은 스크립트 프로젝트의 '스냅샷'으로, 읽기 전용 분기 출시와 유사합니다.
clasp version [description]
이 명령어는 새로 생성된 버전 번호를 표시합니다. 이 번호를 사용하여 프로젝트의 인스턴스를 배포하고 배포 해제합니다.
clasp deploy [version] [description]
clasp undeploy <deploymentId>
이 명령어는 새 버전과 설명으로 기존 배포를 업데이트합니다.
clasp redeploy <deploymentId> <version> <description>
배포 나열
이 명령어는 스크립트 프로젝트의 배포 ID, 버전, 설명을 나열합니다.
clasp deployments
Apps Script 편집기에서 프로젝트를 엽니다.
이 명령어는 Apps Script 편집기에서 스크립트 프로젝트를 엽니다. 편집기가 기본 웹브라우저의 새 탭으로 실행됩니다.
clasp open-script
clasp 오픈소스 프로젝트에 참여
GitHub에서 clasp에 참여하세요.
clasp 및 GitHub Actions를 사용한 Apps Script용 CI/CD
이 가이드에서는 clasp 및 GitHub Actions를 사용하여 Google Apps Script 프로젝트의 자동화된 린트, 테스트, 배포를 설정하는 방법을 설명합니다.
1. 기본 요건
시작하기 전에 요구사항의 설정 단계를 완료하세요.
또한 다음 항목도 필요합니다.
- GitHub 저장소
script.google.com/home/usersettings에서 사용 설정된 Apps Script API
2. CI의 인증
CI 러너는 OAuth용 브라우저를 열 수 없으므로 사용자 인증 정보를 GitHub 보안 비밀로 저장합니다.
| 보안 비밀 | 값 |
|---|---|
CLASPRC_JSON |
~/.clasprc.json의 콘텐츠 (clasp login에서 생성) |
CLASP_JSON |
.clasp.json (스크립트 ID 매핑)의 콘텐츠 |
.clasprc.json의 새로고침 토큰은 Apps Script 프로젝트에 대한 액세스 권한을 부여합니다.
민감한 사용자 인증 정보로 취급하고 주기적으로 순환합니다.
.clasprc.json 및 .clasp.json을 .gitignore에 추가합니다. 여기에는 사용자 인증 정보가 포함되어 있으므로 커밋하면 안 됩니다.
3. CI 워크플로 - PR에서 린트 및 테스트
.github/workflows/ci.yml:
name: CI
on:
pull_request:
branches: [main]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.3
- uses: actions/setup-node@v6.3
with:
node-version: "20"
cache: npm
- run: npm ci
- run: npm run lint
4. CD 워크플로 - 병합 시 배포
.github/workflows/deploy.yml:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: npm
- run: npm ci
- run: npm run lint && npm test
- name: Setup clasp credentials
run: |
echo '${{ secrets.CLASPRC_JSON }}' > ~/.clasprc.json
echo '${{ secrets.CLASP_JSON }}' > .clasp.json
- name: Push and version
run: |
npx @google/clasp push --force
npx @google/clasp version "$(git rev-parse --short HEAD)"
--force 플래그는 확인 없이 원격 코드를 덮어씁니다. 이 파이프라인이 설정되면 Apps Script 편집기에서 수동으로 수정하지 마세요. 저장소가 단일 정보 소스가 됩니다.
5. 멀티 환경 배포
별도의 개발/스테이징/프로덕션 환경의 경우 각 환경에 대해 별도의 Apps Script 프로젝트를 만들고 구성을 별도의 비밀 (CLASP_JSON_DEV, CLASP_JSON_STAGING, CLASP_JSON_PROD)로 저장합니다. 워크플로에서 배포되는 브랜치에 따라 적절한 비밀을 .clasp.json에 작성합니다.
문제 해결
| 오류 | 수정 |
|---|---|
| '스크립트 API가 사용 설정되지 않음' | script.google.com/home/usersettings에서 사용 설정 |
| '401 Unauthorized' | clasp login를 로컬에서 다시 실행하고 CLASPRC_JSON 보안 비밀 업데이트 |
| 'ENOENT .clasp.json' | 사용자 인증 정보 단계에서 clasp push 전에 파일을 쓰는지 확인 |
| 푸시는 성공했지만 코드가 변경되지 않음 | 보안 비밀의 scriptId이 대상 프로젝트와 일치하는지 확인합니다. |