Claude-skill-registry gas-automation
Google Apps Script開発スキル。GAS作成、スプレッドシート自動化、Google API連携時に使用。
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gas-automation" ~/.claude/skills/majiayu000-claude-skill-registry-gas-automation && rm -rf "$T"
manifest:
skills/data/gas-automation/SKILL.mdsource content
Google Apps Script開発スキル
基本方針
- JSDoc形式のコメント必須
- try-catchでエラーハンドリング
- ログ出力: console.log / Logger.log
- トリガー設定を考慮した設計
標準テンプレート
/** * メイン処理 * @description 処理の説明 */ function main() { try { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('シート名'); // 処理 console.log('処理完了'); } catch (e) { console.error('エラー: ' + e.message); throw e; } }
よく使うパターン
スプレッドシート操作
// 最終行取得 const lastRow = sheet.getLastRow(); // 範囲取得 const range = sheet.getRange(row, col, numRows, numCols); // 値の一括取得/設定 const values = range.getValues(); range.setValues(values);
外部API連携
/** * 外部APIを呼び出す * @param {string} url - APIエンドポイント * @returns {Object} レスポンスデータ */ function fetchApi(url) { const options = { method: 'get', headers: { 'Content-Type': 'application/json' }, muteHttpExceptions: true }; const response = UrlFetchApp.fetch(url, options); return JSON.parse(response.getContentText()); }
実行時間制限対策
- 6分制限を意識した分割処理
- PropertiesServiceで状態保存
- トリガーでの継続実行
/** * 処理状態を保存 * @param {number} lastIndex - 最後に処理したインデックス */ function saveProgress(lastIndex) { const props = PropertiesService.getScriptProperties(); props.setProperty('lastIndex', lastIndex.toString()); } /** * 処理状態を取得 * @returns {number} 最後に処理したインデックス */ function getProgress() { const props = PropertiesService.getScriptProperties(); const lastIndex = props.getProperty('lastIndex'); return lastIndex ? parseInt(lastIndex, 10) : 0; }
トリガー設定
/** * 時間ベースのトリガーを設定 */ function createTimeTrigger() { ScriptApp.newTrigger('main') .timeBased() .everyHours(1) .create(); }
Examples
→ getValues/setValuesパターンを提供/gas-automation スプレッドシートのデータを自動処理したい
→ トリガー設定のテンプレートを提供/gas-automation 毎日決まった時間に実行したい
→ UrlFetchAppパターンを提供外部APIからデータを取得したい
→ 分割処理+PropertiesService保存パターンを提供処理が6分で止まる
Guidelines
- すべての関数にJSDoc形式のコメントを付ける
- try-catchで例外処理を必ず実装
- 6分の実行時間制限を意識した設計にする
- 状態保存にはPropertiesServiceを使用
- ログ出力はconsole.logまたはLogger.logを使用
- スプレッドシート操作はgetValues/setValuesで一括処理(セル単位アクセスは遅い)
- API呼び出しにはmuteHttpExceptions: trueを設定してエラーハンドリング