ใช้อินเทอร์เฟซบรรทัดคำสั่งกับ Clasp

หากต้องการพัฒนาและจัดการโปรเจ็กต์ 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 ของคุณ คุณระบุโปรเจ็กต์สคริปต์ ที่จะโคลนได้โดยระบุรหัสสคริปต์ คุณสามารถโคลนทั้งโปรเจ็กต์แบบสแตนด์อโลนและโปรเจ็กต์ที่เชื่อมโยงกับคอนเทนเนอร์

วิธีค้นหารหัสสคริปต์ของโปรเจ็กต์

  1. เปิดโปรเจ็กต์ Apps Script
  2. คลิกการตั้งค่าโปรเจ็กต์ ทางด้านซ้าย
  3. คัดลอกรหัสสคริปต์ในส่วนรหัส

    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 ในข้อมูลลับตรงกับโปรเจ็กต์เป้าหมาย

อ่านเพิ่มเติม