หากต้องการพัฒนาและจัดการโปรเจ็กต์ Google Apps Script จากเทอร์มินัลแทนที่จะใช้เครื่องมือแก้ไขสคริปต์ Apps Script ให้ใช้เครื่องมือโอเพนซอร์ส clasp
clasp Codelab จะแสดงภาพรวมของฟีเจอร์ทั้งหมดของ
clasp
ฟีเจอร์
clasp ประกอบด้วยฟีเจอร์ต่อไปนี้
พัฒนาในหน่วย
clasp ช่วยให้คุณพัฒนาโปรเจ็กต์ Apps Script ได้ในเครื่อง เขียนโค้ดในคอมพิวเตอร์ของคุณเองและอัปโหลดไปยัง Apps Script เมื่อเสร็จสิ้น นอกจากนี้ คุณยังดาวน์โหลดโปรเจ็กต์ Apps Script ที่มีอยู่เพื่อ
แก้ไขแบบออฟไลน์ได้ด้วย ใช้เครื่องมือพัฒนาที่คุณชื่นชอบ เช่น
git เมื่อสร้างโปรเจ็กต์ Apps Script
จัดการเวอร์ชันการติดตั้งใช้งาน
สร้าง อัปเดต และดูการทำให้ใช้งานได้หลายรายการ ของโปรเจ็กต์
รหัสบ้าน
clasp ช่วยให้คุณจัดระเบียบโค้ดเป็นไดเรกทอรี ซึ่งจะยังคงอยู่
เมื่อคุณอัปโหลดไปยัง script.google.com เช่น
# On script.google.com: ├── tests/slides.gs └── tests/sheets.gs # Locally: ├── tests/ │ ├─ slides.gs │ └─ sheets.gs
ประเภทโปรเจ็กต์
คุณใช้ clasp เพื่อจัดการทั้งโปรเจ็กต์สคริปต์แบบสแตนด์อโลนและแบบที่ผูกกับคอนเทนเนอร์ได้
โปรเจ็กต์แบบสแตนด์อโลน
โปรเจ็กต์แบบสแตนด์อโลนจะปรากฏเป็นไฟล์แยกต่างหากใน Google ไดรฟ์ คุณสร้างสคริปต์แบบสแตนด์อโลนใหม่ได้โดยใช้คำสั่ง clasp create
โปรเจ็กต์ที่เชื่อมโยงกับคอนเทนเนอร์
โปรเจ็กต์ที่เชื่อมโยงกับคอนเทนเนอร์จะแนบอยู่กับไฟล์ Google เอกสาร, ชีต, สไลด์ หรือ Google ฟอร์ม
คุณสร้างสคริปต์ที่เชื่อมโยงกับคอนเทนเนอร์ใหม่ซึ่งแนบกับไฟล์ใหม่ได้โดยใช้คำสั่ง 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
เข้าสู่ระบบ
คำสั่งนี้จะเข้าสู่ระบบและให้สิทธิ์ในการจัดการโปรเจ็กต์ Apps Script ของบัญชี Google เมื่อเรียกใช้แล้ว ระบบจะขอให้คุณลงชื่อเข้าใช้บัญชี Google ที่เก็บโปรเจ็กต์ Apps Script
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 ไดรฟ์ที่มีอยู่ (เอกสาร, ชีต, สไลด์ หรือ ฟอร์ม) ที่ควรเชื่อมโยงโปรเจ็กต์สคริปต์ใหม่
คำสั่งนี้จะสร้างไฟล์ 2 ไฟล์ในไดเรกทอรีปัจจุบันด้วย
.clasp.jsonไฟล์ที่จัดเก็บรหัสสคริปต์appsscript.jsonไฟล์ Manifest ของโปรเจ็กต์ที่มีข้อมูลเมตาของโปรเจ็กต์
โคลนโปรเจ็กต์ที่มีอยู่
คำสั่งนี้จะโคลนโปรเจ็กต์ที่มีอยู่ในไดเรกทอรีปัจจุบัน สคริปต์ ต้องสร้างหรือแชร์กับบัญชี Google ของคุณ คุณระบุโปรเจ็กต์สคริปต์ ที่จะโคลนได้โดยระบุรหัสสคริปต์ คุณสามารถโคลนทั้งโปรเจ็กต์แบบสแตนด์อโลนและโปรเจ็กต์ที่เชื่อมโยงกับคอนเทนเนอร์
วิธีค้นหารหัสสคริปต์ของโปรเจ็กต์
- เปิดโปรเจ็กต์ Apps Script
- คลิกการตั้งค่าโปรเจ็กต์ ทางด้านซ้าย
คัดลอกรหัสสคริปต์ในส่วนรหัส
clasp clone
ดาวน์โหลดโปรเจ็กต์สคริปต์
คำสั่งนี้จะดาวน์โหลดโปรเจ็กต์ Apps Script จาก Google ไดรฟ์ไปยังระบบไฟล์ของคอมพิวเตอร์
clasp pull
อัปโหลดโปรเจ็กต์สคริปต์
คำสั่งนี้จะอัปโหลดไฟล์ทั้งหมดของโปรเจ็กต์สคริปต์จากคอมพิวเตอร์ไปยังไดรฟ์
clasp push
แสดงรายการเวอร์ชันของโปรเจ็กต์
คำสั่งนี้จะแสดงหมายเลขและคำอธิบายของแต่ละเวอร์ชันของโปรเจ็กต์สคริปต์
clasp versions
ทำให้โปรเจ็กต์ที่เผยแพร่แล้วใช้งานได้
ทำให้โปรเจ็กต์สคริปต์ใช้งานได้ในรูปแบบเว็บแอป ส่วนเสริม Google Workspace หรือไฟล์ที่เรียกใช้งานได้ สร้างการติดตั้งใช้งานในเครื่องมือแก้ไขสคริปต์ ในไฟล์ Manifest ของโปรเจ็กต์ หรือใช้ clasp
หากต้องการติดตั้งใช้งานโปรเจ็กต์ด้วย clasp ให้สร้างโปรเจ็กต์ Apps Script เวอร์ชันที่แก้ไขไม่ได้ก่อน เวอร์ชันคือ "สแนปชอต" ของโปรเจ็กต์สคริปต์
และคล้ายกับการเผยแพร่แบบแยกสาขาแบบอ่านอย่างเดียว
clasp version [description]
คำสั่งนี้จะแสดงหมายเลขเวอร์ชันที่สร้างขึ้นใหม่ ใช้หมายเลขดังกล่าวเพื่อติดตั้งใช้งานและเลิกใช้งานอินสแตนซ์ของโปรเจ็กต์
clasp deploy [version] [description]
clasp undeploy <deploymentId>
คำสั่งนี้จะอัปเดตการติดตั้งใช้งานที่มีอยู่ด้วยเวอร์ชันและคำอธิบายใหม่
clasp redeploy <deploymentId> <version> <description>
แสดงรายการการทำให้ใช้งานได้
คำสั่งนี้จะแสดงรหัสการติดตั้งใช้งาน เวอร์ชัน และคำอธิบายของโปรเจ็กต์สคริปต์
clasp deployments
เปิดโปรเจ็กต์ในเครื่องมือแก้ไข Apps Script
คำสั่งนี้จะเปิดโปรเจ็กต์สคริปต์ในเครื่องมือแก้ไขสคริปต์ Apps Script โดยเครื่องมือแก้ไขจะเปิดเป็นแท็บใหม่ในเว็บเบราว์เซอร์เริ่มต้น
clasp open-script
มีส่วนร่วมในclaspโปรเจ็กต์โอเพนซอร์ส
ร่วมสร้างสรรค์ clasp บน GitHub
CI/CD สำหรับ Apps Script ด้วย clasp และ GitHub Actions
คู่มือนี้ครอบคลุมการตั้งค่าการวิเคราะห์ซอร์สโค้ด การทดสอบ และการทำให้ใช้งานได้โดยอัตโนมัติสำหรับโปรเจ็กต์ Google Apps Script โดยใช้ clasp และ GitHub Actions
1. ข้อกำหนดเบื้องต้น
ก่อนที่จะเริ่มต้น ให้ทำตามขั้นตอนการตั้งค่าในข้อกำหนด
นอกจากนี้ คุณยังต้องมีสิ่งต่อไปนี้ด้วย
- ที่เก็บ GitHub
- เปิดใช้ Apps Script API ที่
script.google.com/home/usersettings
2. การตรวจสอบสิทธิ์ใน CI
เนื่องจากโปรแกรมเรียกใช้ CI ไม่สามารถเปิดเบราว์เซอร์สำหรับ OAuth ได้ คุณจึงจัดเก็บข้อมูลเข้าสู่ระบบเป็นGitHub Secrets ดังนี้
| ข้อมูลลับ | ค่า |
|---|---|
CLASPRC_JSON |
เนื้อหาของ ~/.clasprc.json (สร้างโดย clasp login) |
CLASP_JSON |
เนื้อหาของ .clasp.json (การแมปรหัสสคริปต์) |
โทเค็นการรีเฟรชใน .clasprc.json จะให้สิทธิ์เข้าถึงโปรเจ็กต์ Apps Script ของคุณ
ถือว่าคีย์นี้เป็นข้อมูลเข้าสู่ระบบที่ละเอียดอ่อนและหมุนเวียนคีย์เป็นระยะๆ
เพิ่ม .clasprc.json และ .clasp.json ลงใน .gitignore ไฟล์เหล่านี้มี
ข้อมูลเข้าสู่ระบบและไม่ควรคอมมิต
3. เวิร์กโฟลว์ CI - Lint และทดสอบใน 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 ตาม Branch ที่กำลังจะทำให้ใช้งานได้
การแก้ปัญหา
| ข้อผิดพลาด | แก้ไข |
|---|---|
| "ไม่ได้เปิดใช้ Script API" | เปิดใช้ที่ script.google.com/home/usersettings |
| "401 Unauthorized" | เรียกใช้ clasp login อีกครั้งในเครื่อง อัปเดตข้อมูลลับของ CLASPRC_JSON |
| "ENOENT .clasp.json" | ขั้นตอนการยืนยันข้อมูลเข้าสู่ระบบจะเขียนไฟล์ก่อน clasp push |
| การพุชสำเร็จ แต่โค้ดไม่เปลี่ยนแปลง | ยืนยันว่า scriptId ในข้อมูลลับตรงกับโปรเจ็กต์เป้าหมาย |