clasp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited clasp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Google Apps Script を CLI から操作するスキル。
用途に応じて該当ファイルを Read する。
| やりたいこと | 参照先 |
|---|---|
| コードをプッシュしたい | このファイル「push フロー」節(下) |
初めて使う・インストール・clasp login | references/setup.md |
| GASプロジェクトと接続する(初回接続・ケースA/B 判定) | references/init.md |
Web エディタの変更を取り込む(clasp pull・日常同期) | references/pull.md |
| マルチ環境(開発/リリース)の配布版 push | references/deploy-dist.md |
| デプロイ・ロールバック・バージョン戻し(ライブラリ・ウェブアプリ) | references/deploy.md |
| GAS ウェブアプリの iframe 問題・画像表示 | references/webapp.md |
clasp logs で実行ログを取得 | references/logs.md |
.clasp.json が存在することclasp がインストールされていることappsscript.json の確認・作成なければ作成。既存ならスコープの過不足をチェック。
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets"
]
}プロジェクトに必要なスコープのみ追加する。 実際には https://www.googleapis.com/auth/ プレフィックスを付ける。
よく使う権限一覧:
| 権限 | 用途 |
|---|---|
gmail.readonly | Gmail の読み取り |
gmail.send | メール送信 |
drive | Google Drive 操作 |
documents | Google Docs 操作 |
spreadsheets | スプレッドシート操作 |
forms | Google Forms の作成・編集 |
calendar | Google Calendar 操作 |
script.scriptapp | トリガー設定 |
script.external_request | UrlFetchApp(外部 API 呼び出し) |
script.container.ui | UI ダイアログ・サイドバー表示 |
.clasp.json の確認ls .clasp*.json複数ファイルがある場合(例: `.clasp.dev.json`, `.clasp.prod.json`):
.clasp.json にコピーし、push 後に元へ戻す.clasp.json を永続的に切り替える場合は、その意図をユーザーに確認してから行うCLASP_BAK=".clasp.json.bak.$(date +%Y%m%d%H%M%S)"
node -e "const fs=require('fs');fs.existsSync('.clasp.json')&&fs.copyFileSync('.clasp.json',process.argv[1])" "$CLASP_BAK"
printf '%s\n' "$CLASP_BAK" > .clasp.json.bak-path
node -e "const fs=require('fs');fs.copyFileSync(process.argv[1],'.clasp.json')" ".clasp.<env>.json".claspignore の確認(push 対象の除外).claspignore は push 対象から外すファイルを指定する(.gitignore と似た書式)。
`.claspignore` が無い場合のデフォルト挙動(clasp 3.x): いったん全ファイルを無視し、 rootDir 配下の appsscript.json / .gs / .js / .ts / .html だけを push 対象にする。 さらに .git/** と node_modules/** は常に除外される。 → つまり素の JS/HTML プロジェクトなら無くても実害は出にくいが、対象を明示したい場合は作る。
典型例(ドキュメント・テストを push しない):
*.md
node_modules/**
tests/**push 対象の事前確認は clasp show-file-status(旧 alias: clasp status)。
clasp push 実行重要: Git Bash では clasp の出力がキャプチャされない問題があるため、必ず Node.js 経由で実行すること。
run_clasp_push() {
local push_status=0
local restore_status=0
node -e "const{execSync}=require('child_process');try{execSync('clasp push --force',{stdio:'inherit'})}catch(e){process.exit(e.status||1)}" || push_status=$?
# 複数環境のため一時切替した場合だけ、push 後に .clasp.json を復元
node -e "const fs=require('fs');let bak=process.argv[1];const marker='.clasp.json.bak-path';if(!bak&&fs.existsSync(marker)){bak=fs.readFileSync(marker,'utf8').trim()}if(bak&&fs.existsSync(bak)){fs.copyFileSync(bak,'.clasp.json');fs.unlinkSync(bak)}if(fs.existsSync(marker)){fs.unlinkSync(marker)}" "${CLASP_BAK:-}" || restore_status=$?
[ "$restore_status" -eq 0 ] || { echo "failed to restore .clasp.json" >&2; return "$restore_status"; }
[ "$push_status" -eq 0 ] || { echo "clasp push failed" >&2; return "$push_status"; }
}
run_clasp_push新しい GAS API(FormApp, DriveApp 等)を使うコードを追加した場合、oauthScopes に対応する権限を追加しないと実行時エラーになる。
Exception: 指定された権限では FormApp.create を呼び出すことができません。
必要な権限: https://www.googleapis.com/auth/forms対処:
appsscript.json の oauthScopes に不足しているスコープを追加(上記権限一覧を参照)clasp push で反映clasp push 成功後、push 先がバインドスクリプト(スプレッドシートに紐づくプロジェクト)の場合、スプレッドシート名を日付付きにリネームするようリマインダーを表示する。
deploy-dist.sh テンプレート内のコメント位置に日付付きリネームのリマインダー echo を追加するデプロイを依頼されたら、必ず種別を判定してから手順を選ぶ。
| 種別 | 判定ヒント | 更新手順 |
|---|---|---|
| ライブラリ | doGet/doPost なし | clasp deploy -i <id> で CLI 更新可 → references/deploy.md |
| ウェブアプリ | doGet/doPost あり | 既存デプロイは CLI 更新可。更新後に既存 URL の動作確認必須 → references/deploy.md |
初回ウェブアプリ作成、実行ユーザー、アクセス権限の変更は GAS UI で行う。 既存 URL に新しいコードバージョンを反映するだけなら clasp update-deployment <id> または clasp deploy -i <id> を使えるが、更新後は必ず公開 URL を開いて確認する。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.