泥沼の503エラーから生還せよ!Gemini APIとGASを仲直りさせる「リトライ術」

日記

はい、かっこつけました。すみません。~~本当は503が出た瞬間、PCの前で「あぁぁぁあ!!」って叫んでお茶をぶちまけそうになりました。~~

みなさん、こんにちは!40代から始めたDIYとプログラミングの沼にどっぷり浸かっている、積み立てMASAです。🛠️✨ 今日は木工の話じゃなくて、最近僕を冷や汗まみれにした「Gemini APIの503エラー」について、人柱として共有させていただきます!

Gemini APIの「壁」にぶち当たった夜

最近、GAS(Google Apps Script)を使ってGemini APIと連携し、便利ツールを作ろうと意気込んでいたんです。DIYでいうところの「全自動木材カットマシン」を作ろうとして、設計図を引いているような気分ですね。

ところが、実装してテストを繰り返していると、急に返ってくるんです。 「503 Service Unavailable」の文字が。

「えっ、俺、なんか悪いことした!?」と一瞬パニックになりました。サーバーがダウンしているのか、Google様がご立腹なのか……。調べれば調べるほど、これは「一時的な過負荷」や「レート制限」が原因の可能性が高いことがわかりました。DIYで言えば、電動ドリルを無理な力で回しすぎて、ブレーカーが落ちたような状態です。~~ただ単に僕のコードがポンコツだっただけという説も濃厚です。~~

GASで「諦めない心」を実装する

503エラーが出たとき、一度の失敗でスクリプト全体を止めてしまうのは、DIYでいえば「釘を一本打ち損ねただけで家を解体する」ようなものです。

必要なのは、「あ、ダメだった? じゃあもう一回やってみるわ!」という柔軟な精神構造(リトライ処理)でした。GASでAPIを叩く際、ただUrlFetchApp.fetchを呼ぶだけじゃ足りないんです。エラーをキャッチし、適切に再試行するロジックが必要だったんですね。

泥沼から抜け出した「指数バックオフ」という賢い戦略

最初は「エラーが出たら即座に再試行!」と単純なループを組んだのですが、これだとサーバーにさらに負荷をかけてしまい、「追い打ちの503」という地獄絵図になりました。😂

そこで導入したのが「指数バックオフ」という技法。これは、再試行の間隔を少しずつ長くしていく方法です。

function callGeminiWithRetry(prompt) {
const maxRetries = 3;
let delay = 1000; // 最初は1秒待つ

for (let i = 0; i <= maxRetries; i++) {
try {
const response = UrlFetchApp.fetch(API_URL, options);
return JSON.parse(response.getContentText());
} catch (e) {
if (i === maxRetries) throw e;
Logger.log(`エラー発生! ${delay/1000}秒後にリトライします…`);
Utilities.sleep(delay);
delay *= 2; // 待機時間を倍にする(指数バックオフ)
}
}
}

このコードを書いたとき、「俺、ちょっとプログラマーっぽいぞ……!」と胸が熱くなりました。実際にこれを実装してからは、エラーでスクリプトが止まることが激減しました。失敗を織り込む、これぞエンジニアリングのDIY精神ですね!🛠️🔥

Gemini APIを飼い慣らすためのTips

最後に、僕のようなDIY初心者が同じ罠にハマらないための教訓です。

  • エラーハンドリングを標準装備にする: try...catch はオプションじゃなくて必須です。

  • サーバーに優しく: 急激な連続アクセスは避け、適度な間隔(スリープ)を設けましょう。

  • ログを信じる: Logger.log で何が起きているか可視化するだけで、解決までの時間は半分になります。

Gemini APIは強力な相棒です。たまに機嫌を損ねて「503」なんて言ってくるかもしれませんが、それは彼も頑張っている証拠。根気よく向き合って、最高のアウトプットを作り上げましょう!

おすすめのツール

今回、この問題に立ち向かう際に役立ったのは、Googleが提供している「Apps Scriptの公式リファレンス」と、有志が公開している「APIエラーハンドリングの設計パターン」のメモでした。

特に、指数バックオフの考え方を学んだおかげで、API連携だけでなく、スプレッドシートへの大量書き込みエラーなども怖くなくなりました。道具(ロジック)を知ることは、どんな分野でも武器になりますね!✨

Gemini AI活用 最強の教科書 [ 桑名 由美 ]

価格:1980円
(2026/6/16 23:45時点)
感想(0件)

PROJECT: HUMAN BODY MAINTENANCE

積立 MASA

“I live my code a retry at a time. It don’t matter if you win by an inch or a mile, winning’s winning.”

「俺の人生はリトライ単位だ。1インチ差だろうが1マイル差だろうが関係ねぇ。勝ちは勝ちだ。」

コメント

タイトルとURLをコピーしました