◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/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 を分解し、中断しても壊れない転送を組み立てます。

gemini119apps-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/月 または ¥1,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-15
Meet の自動メモを使い始める前に、カレンダーの予定側で決めておく三つのこと
Meet の「Take notes for me」は、会議が始まってからでは変えられない設定があります。予定の側で決めておく言語・共有範囲・開始方法と、参加者への断り方を、公式ヘルプの記載に沿って順番にまとめました。