◉GEMINI LABEN
●VEO 3.1 — veo-3.1 の preview 3モデルは 10/22 に停止、残り14日。移行先は gemini-omni-1.1-flash●OMNI — gemini-omni-flash-preview の停止も 10/22。9/30 ではなく表の日付に合わせて確認を●NANO 2.1 — 画像モデル gemini-nano-banana-2.1 が GA。gemini-3.1-flash-image は非推奨で停止日は未発表●CLI 0.63 — Gemini CLI 安定版 v0.63.0。接続回復時のリトライ表示などを改善●TTS/LIVE — 2.5 系の音声・TTS 系プレビューは 11/17 に停止、残り40日●NEW — Veo 3.1 preview の 10/22 停止、差し替え前の棚卸し手順●VEO 3.1 — veo-3.1 の preview 3モデルは 10/22 に停止、残り14日。移行先は gemini-omni-1.1-flash●OMNI — gemini-omni-flash-preview の停止も 10/22。9/30 ではなく表の日付に合わせて確認を●NANO 2.1 — 画像モデル gemini-nano-banana-2.1 が GA。gemini-3.1-flash-image は非推奨で停止日は未発表●CLI 0.63 — Gemini CLI 安定版 v0.63.0。接続回復時のリトライ表示などを改善●TTS/LIVE — 2.5 系の音声・TTS 系プレビューは 11/17 に停止、残り40日●NEW — Veo 3.1 preview の 10/22 停止、差し替え前の棚卸し手順
記事一覧/Workspace 連携
◧ Workspace 連携/2026-07-10上級

Apps Script の6分制限を跨いで Gemini Files API に大容量ファイルを再開アップロードする

Drive に置いた数百MBの動画や音声を Apps Script から Gemini Files API へ送る際、6分の実行時間上限とペイロード上限をどう跨ぐか。resumable upload の start / upload / query / finalize を分解し、中断しても壊れない転送を組み立てます。

gemini116apps-script11files-api4google-workspace7resumable-upload

✦ プレミアム記事

Drive に置いた 380 MB の紹介動画を Gemini に読ませようとして、Apps Script の実行が「Exceeded maximum execution time」で止まりました。個人開発で運用しているアプリの動画素材を、月に一度まとめて解析させたいだけだったのですが、UrlFetchApp に blob を渡す素朴な書き方では最初の一歩で詰みます。

Files API の仕様と Apps Script の実行モデルは、そもそも噛み合っていません。片方は「大きなファイルを一度に預かる」前提で、もう片方は「6分で必ず殺される短命な関数」です。この二つを橋渡しするには、転送そのものを中断可能な状態機械として設計し直す必要がありました。

まず Files API 側の制約を数字で押さえる

実装の前に、どこが硬い壁なのかを確定させます。Gemini の公式ドキュメントが明示している数値は次の通りです。

項目値実装への影響
Files API を使うべき閾値リクエスト総サイズ 100 MB 超これ未満なら inline data で済む
PDF の inline 上限50 MBPDF だけ閾値が低い
1ファイルの最大サイズ2 GBこれを超えるなら事前分割が必要
プロジェクトあたりの保管容量20 GB放置すると容量を食い潰す
保管期間48 時間期限後は自動削除・ダウンロード不可

利用料は無償で、Gemini API が使える全リージョンで提供されています。ここで効いてくるのは 48 時間 という保管期間です。後述しますが、この短さは制約であると同時に、冪等性を設計する足場にもなります。

resumable upload は三つのコマンドでできている

Files API のアップロードは、内部的には Google 共通の resumable upload プロトコルです。SDK を使うと隠れてしまいますが、REST で叩くと三段構えなのが見えます。

第一段は start。ファイル本体は送らず、メタデータだけを投げてアップロード先の URL を受け取ります。

curl "https://generativelanguage.googleapis.com/upload/v1beta/files" \
  -H "x-goog-api-key: ${GEMINI_API_KEY}" \
  -D headers.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: 398458880" \
  -H "X-Goog-Upload-Header-Content-Type: video/mp4" \
  -H "Content-Type: application/json" \
  -d '{"file": {"display_name": "promo-2026-07"}}'
 
# レスポンスヘッダに転送先が返る
grep -i "x-goog-upload-url" headers.tmp

第二段は upload。受け取った URL に対して、X-Goog-Upload-Offset で「このバイト位置から書く」と宣言しながらバイト列を送ります。最後のチャンクだけ upload, finalize を指定すると、そこでファイルが確定します。

第三段が query です。これは公式のコード例にはあまり登場しませんが、中断からの復帰では主役になります。サーバに「今どこまで受け取ったか」を訊ねるコマンドで、これを持っているかどうかで設計の堅さが変わります。

start から finalize までを一気に流すなら SDK で十分です。私自身、100 MB 程度までは client.files.upload() の一行で済ませています。分解が必要になるのは、転送の途中でプロセスが死ぬ環境に置かれたときだけです。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Apps Script の6分制限で落ち続けていた大容量アップロードを、途中から再開できる転送に置き換えられる
✦resumable upload の query コマンドでサーバ側の真のオフセットを取り直し、二重送信とオフセットずれを根絶できる
✦Files API の48時間保管を冪等キーとして使い、同じ Drive ファイルの再アップロードを避けて転送コストを削れる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

◧ Workspace 連携2026-07-16
=GEMINI() を420行に貼って気づいたこと — カスタム関数をやめ、値で書き戻すまでの実測
Sheets のカスタム関数から Gemini を呼ぶ構成は、動いた瞬間がいちばん美しく、そこから伸びません。30秒の壁・制御できない再計算・書き戻せない結果という3つの性質を実測で確かめ、値で書き戻す設計へ移すまでの手順とコードを残します。
◧ Workspace 連携2026-05-27
Google Play 多言語レビュー返信を Gemini と作る — 11 言語の温度感を維持する運用設計
Google Play のレビューに、日本語・英語・繁体字・韓国語・タイ語・イタリア語・ロシア語・ペルシャ語・ウクライナ語・ポーランド語の 11 言語で返信し続けるための運用ルールと、Gemini に何を任せて何を任せないかの線引きを、実際に 2 セッション 71 件返信した記録から書きます。
◧ Workspace 連携2026-10-03
Sheets から呼ぶ Gemini の月額を、年末の値上げ日をまたいで Apps Script で割り出す
スプレッドシートから Gemini API を呼んでいる方へ。呼び出しごとのトークン数を台帳タブに残し、2026年12月31日で終わる導入価格と2027年1月1日からの標準価格の二段で月額を見積もる Apps Script を、動かした出力つきで書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます