実験トップ

GAS×AIの土台 · 登録不要

GASからChatGPTを呼ぶなら、
まず「安全な共通関数」を1つ。

ネットのサンプルをそのまま業務に使うと、APIキーの直書き・混雑時の429エラーで停止・トリガーの二重登録で課金が膨らむ・6分制限で途中終了、のどれかに必ず当たります。呼び出しを askAI("プロンプト") という1つの関数に集約して、対策をまとめて効かせるのが一番ラクです。

1. 5つの落とし穴と対策

落とし穴無いとどうなるか対策
APIキーをコードに直書きコードを共有・スクショした瞬間に漏れるスクリプト プロパティ
429 / 5xx エラー混雑した時間帯に数十行に1回止まるRetry-After→指数バックオフ
残高不足の 429待っても直らないのに待ち続けるinsufficient_quota は即エラー
課金の暴走トリガー二重登録・ループで請求が増える1日の呼び出し上限
同じ文章の再送お金も時間も余分にかかるCacheService で6時間再利用
GASの6分制限途中終了し、どこまで処理したか分からない5分で自主停止→続きから

2. APIキーは「スクリプト プロパティ」へ

  1. Apps Script エディタ左の「⚙ プロジェクトの設定」を開く
  2. 一番下の「スクリプト プロパティ」→「スクリプト プロパティを追加」
  3. プロパティ名 OPENAI_API_KEY、値に sk-... を入れて保存

コードにはキーが残らないので、スクリプトをコピーして人に渡しても漏れません(プロジェクトの編集権限を渡すと見える点だけ注意)。

3. 心臓部:再試行してよいエラーだけ再試行する

const code = res.getResponseCode();
const text = res.getContentText();
// 残高不足の 429 は待っても直らないので即エラー
const quota = text.indexOf('insufficient_quota') >= 0;
const retryable = (code === 429 && !quota) || code >= 500;
if (!retryable || i === MAX_RETRIES) {
  throw new Error('OpenAI API エラー HTTP ' + code + ': ' + text.slice(0, 300));
}
// Retry-After があれば従い、無ければ 1秒→2秒→4秒 +ゆらぎ
const h = res.getHeaders();
const ra = Number(h['Retry-After'] || h['retry-after']);
const waitMs = ra > 0 ? ra * 1000 : Math.pow(2, i) * 1000 + Math.floor(Math.random() * 500);
Utilities.sleep(Math.min(waitMs, 20000));

muteHttpExceptions: true を付けて UrlFetchApp を呼ぶと、エラー時も例外にならずに本文(エラーの種類)を読めます。

4. 1日の上限は LockService で数える

時間主導トリガーが同時に動くと、単純に getProperty → +1 → setProperty では数え漏れが出ます。LockService.getScriptLock() で囲んでから数え、日付キー(例:ai_calls_20260924)で管理すれば、翌日には自動でリセットされます。最初の上限は 50〜100回くらいから始めるのが安全です。

5. 大量の行は「5分で止まって、続きから」

考え方:ループの先頭で経過時間を見て、5分を超えたら自分で return。結果列が埋まっている行は飛ばすので、もう一度実行すれば空いている行から再開します。エラーの行には ERROR: … と書いておき、消せば次回やり直し。上限に達したらその場で止めます。

6. 注意点

7. コード全文(無料)

キャッシュ・1日の上限・JSONモード・動作確認用関数まで入った askAI() の全文(約110行)と一括処理のサンプルは、Zenn の解説記事として順次公開します。GAS×ChatGPT自動化の基本は無料の Zenn 本にまとめています。

無料の本「GAS×ChatGPTで事務自動化」を読む →

この土台の上に、業務用スクリプトを載せたい方へ

Gmail 問い合わせの返信下書き・請求書PDF+送付メール・議事録の要点とTODO整形など、そのまま動く GAS 5本と日本語の導入手順書のセットです(どれも送信はせず下書きまで)。

そのまま動くGAS5本+導入ガイド【PRO版・$39】を見る → スプレッドシート =AI() 関数・一括処理つき拡張版($3)→ Gmail問い合わせ AI 下書き返信・拡張版($3)→

手で貼って使うプロンプトだけ欲しい方へ:事務AIプロンプト集12種(無料・投げ銭歓迎)

Gumroad での販売です。このページの askAI() 関数自体は無料公開予定で、有料版に同梱されているものとは別物です。必要なのは Google アカウントと OpenAI の API キー(従量課金)。AI の答えは誤りを含む可能性があります。デジタル納品のため、ダウンロード後の返金はお受けできません(不具合時は誠実に対応します)。

自分で設定するのが不安な方へ(ココナラ・日本円):シート1列のAI一括処理と、当日分の自動サマリーメールのGAS2本+日本語手順書を、ココナラで販売しています(3,000円・税抜〜)。初期設定サポート(+4,000円)や、あなたの実データで自動化フローを1つ一緒に作る導入伴走(+12,000円)は任意のオプションです(いずれも税抜)。対応できるかは購入前の見積り相談で確認できます。

ココナラで導入相談・購入する →

スプレッドシートに =AI() 関数を自作 · フォーム問い合わせをAIで振り分け · Gmail問い合わせをAIで下書き返信 · 請求書PDF+AI添え状メール · 無料本:GAS×ChatGPT事務自動化の基本

AI Revenue Experiment の用途解説ページです。導入実績や効果測定の結果ではありません。