
AIを使ったGoogle App Script開発で足元をすくわれないためのCLAUDE.md要件
ClaudeCodeを用いたコーディングはGoogle App Scriptにおいても効果を発揮します。ただ、あくまでもJavaScriptの一種としての扱いなのか、Google App Scriptの仕様と噛み合わない点もいくつかあります。
CLAUDE.mdを介して可能な対策をいくつか書き起こしてみました。
開発ライブラリ
Google App Script用コードを開発する趣旨をClaudeCodeに伝えれば、ほとんどの場合AIが自動で対応してくれます。CLAUDE.mdに追記するよう指示した場合は、以下のような要件が追加されるはずです。
- ローカル開発とデプロイには
clasp
CLIを使用 - 関数はGASランタイム環境と互換性が必要
- npm依存関係なし - GAS組み込みライブラリまたは外部APIを使用
- ES6+機能はGASランタイムでサポートが限定的
Google Apps Script GitHub アシスタントを使ってエディタ上から同期することも可能ですが、claspが利用できる環境であえてこちらを選ぶ必要はないでしょう。
ファイル形式
claspを用いた開発において見落としがちな仕様として、pullするとjsファイルが取得される一方で、pushはそのままでは対応してくれない点があります。以下の一行を足しておきます。
clasp pull
した場合に取り込んだファイルはjsからgsにリネームすること
時間の扱い
ClaudeCodeがGoogle App Scriptのコードを生成する際、日付に関する要件が指定されていないと、文字列形式(2025-06-30T00:00:00
)とDate型(Mon June 30 2025 00:00:00
)の比較における不整合や、タイムゾーンの時差に関する問題が発生します。
対策としてはフォーマットの固定と常にタイムゾーンを設定させることです。以下の2点をCLAUDE.mdに追記しておきます。
- 日付は日本時間で扱うこと
- 時間表記はISO 8601形式(YYYY-MM-DDTHH:mm:ssZ)を使用
テストケース
ClaudeCodeは、特に要件指定がない場合、モックがない状況でもSpreadSheet上のセルを操作する処理に対して構わずテストを作成し始めます。これを回避するには、ClaudeCodeにgas-localを使用したテストを指示しておきましょう。CLAUDE.mdに記述する場合の一例は以下の通りです。
- ローカル環境: gas-localとJestでのローカルテスト実行
- テストコマンド:
npm test
,npm run test:local
,npm run test:debug
- テスト環境: Node.js + Jest + Babel変換でGAS関数をローカル実行
あとがき
ClaudeCodeへの指示を重ねるほど、Google App Script向けにCLAUDE.mdに定義しておくべき要件が見えてきます。今回挙げた要件は比較的すぐに思いつくものですが、意外にもテストなどで長く躓く原因となり得るものです。コードの修正だけでなく、適切にCLAUDE.mdへも追記を指示しておくと、後々の作業がスムーズになるでしょう。