Google スプレッドシートで毎週回している集計・通知・整形の手作業を、コードで動くようにしたい。それをやろうとして Google Apps Script (GAS) を触り始めた人が最初にぶつかるのが、「1回動いたけど再利用できない」問題だ。
案件が終わるたびに書き直していると、GAS の資産化ができない。この記事では、再利用しやすい GAS テンプレの設計判断 を、実物ベースでまとめる。
GAS で自動化できることの範囲を決める
まず GAS + スプレッドシートで実装できる典型パターン。
- 定時集計(毎日 / 毎週 / 毎月)
- セル変更をトリガーに Slack / Discord へ通知
- 別シートや CSV からの取込み → 整形 → 書き戻し
- 条件分岐でメール自動送信
- 外部 API 呼び出しで最新データを取得
範囲を決めずに「なんでもできる」で書き始めると、依頼のたびにゼロから書くことになる。まず対象範囲を絞ることが、再利用性を上げる第一歩。
再利用テンプレの設計判断(5つ)
1. 関数を「1機能1関数」に分ける
やってはいけないのは、main() に処理を全部詰め込む書き方。読み込み・変換・書き込みの3段階に必ず分ける。
function readSourceRange(sheetName, range) { /* 読み込み */ }
function normalizeRows(rows) { /* 正規化 */ }
function writeResult(sheetName, rows) { /* 書き込み */ }
function main() {
const rows = readSourceRange('Input', 'A2:D');
const normalized = normalizeRows(rows);
writeResult('Output', normalized);
}
読み込み・変換・書き込みが分かれていれば、次の案件で「読み込み元シート名」と「正規化ロジック」だけ差し替えて再利用できる。
2. 設定は先頭の CONFIG に集約
シート名・列番号・Webhook URL などをコード内に散らばらせると、変更のたびに全体を探し回ることになる。先頭で1箇所にまとめる。
const CONFIG = {
sourceSheet: 'Input',
sourceRange: 'A2:D',
outputSheet: 'Output',
webhookUrl: PropertiesService.getScriptProperties().getProperty('WEBHOOK_URL'),
};
通常の設定 はコード内に定数化、秘密情報 (API キー / Webhook URL) は PropertiesService で管理。コミット時に秘密情報を git に載せないための基本。
3. トリガーは「手動実行」から始める
時間駆動トリガーで動く GAS は便利だが、いきなり自動化すると失敗時に気づけない。
- 開発中: 手動実行 で結果を目視確認
- 動作確認済み:
onEdit/onFormSubmitなどのイベント駆動に格上げ - 定時実行: 「通知が来る前提」で追加、必ずエラー通知とセットで
トリガー設定はスプレッドシート依存で消えやすい。どのトリガーが設定されているかを README に残す のが再利用性を上げる地味だが重要な工夫。
4. エラー通知を最初に組み込む
「動いたつもりが実は失敗していた」を防ぐには、GAS の try/catch でエラー時に Slack か Discord に通知が飛ぶ形にしておく。
function safeRun(fn) {
try { fn(); }
catch (e) {
UrlFetchApp.fetch(CONFIG.webhookUrl, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({ text: 'GAS Error: ' + e.message }),
});
}
}
main() を safeRun(main) で包むだけで、失敗が可視化される。運用に乗せる自動化スクリプトは、この一手間で寿命が伸びる。
5. コードは clasp + Git で管理
スプレッドシートに直接書いた GAS は、変更履歴がスクリプトエディタ内にしか残らない。案件が増えるほど「あの時どう書いたか」が失われる。
clasp(Google 公式 CLI) でローカルに引き落として git 管理- コミットメッセージで 変更理由 を残す
- 案件ごとにブランチを切り替えて、テンプレを差し替え運用
これで、同じテンプレを複数案件で使い回しても、案件ごとの差分を後から追える。
無料版と有償版の違い
無料版テンプレ(メール登録で即DL):
- 最小構成の
.gsファイル - 使い方 PDF (10行程度)
有償版 (¥980 note販売中):
- 4種類の実用テンプレ(集計 / 通知 / 整形 / メール送信)
- テンプレごとの手順書 PDF
- カスタマイズポイント (どこを差し替えるべきか) の解説
まず無料版で「動く手触り」を確認 → 有償版で「4種の実務パターン」を得る、という段階設計。
「うちの業務の GAS 自動化を頼みたい」方へ
「スプレッドシートで週次で手作業を回しているが、GAS を触ったことがない」方向けに、対応可能業務はこう。
対応:
- 定時集計 → Slack / Discord / メール通知
- 別シート・CSV 取込み → 整形 → 書き戻し
- 条件分岐での自動メール送信
- 外部 API 呼び出し(天気、レート、為替 等)
対応外:
- 複雑な OAuth 認可を伴う実装
- 大規模データ(10万行以上)のバッチ処理
- SaaS 化(ライセンス管理・課金基盤)
見積目安:
- シンプル自動化: ¥3〜5万 / 3〜7日
- 複合フロー(取込 + 整形 + 通知): ¥5〜10万 / 3〜7日
17項目の相談フォーム → 即日見積 → 動くものを納品まで、Zoom不要・テキストのみで完結。売買推奨・投資助言・利益保証は行いません。
- 無料版DL: /ja/free/#tpl-gas_templates
- 有償版 (note): すぐ渡せる!GASテンプレ ¥980
- 商品詳細: /ja/works/gas-templates/
- カスタム相談: /ja/request/
同じ設計思想で、あなたの業務の反復作業も動くコードに変えます。