GEMINI LABEN
FLASH — Gemini 3.5 FlashがGAとなり、gemini-flash-latestの実体として利用できますAGENTS — Gemini APIのManaged Agentsがパブリックプレビューとなり、Googleホストの隔離Linuxサンドボックスで自律実行できますSTUDIO — Google AI Studioにプロジェクト単位の支出上限(spend caps)が追加され、ネイティブAndroid vibe codingにも対応しましたLIVE — 音声対音声でリアルタイム対話するGemini 3.1 Flash Live Previewが公開されましたIMAGE — 最速・低コストの画像モデルNano Banana 2 Liteが提供され、Gemini Omni FlashもAPIでプレビュー公開されていますLYRIA — 音楽生成モデルLyria 3(clip-preview / pro-preview)が新たに利用できますFLASH — Gemini 3.5 FlashがGAとなり、gemini-flash-latestの実体として利用できますAGENTS — Gemini APIのManaged Agentsがパブリックプレビューとなり、Googleホストの隔離Linuxサンドボックスで自律実行できますSTUDIO — Google AI Studioにプロジェクト単位の支出上限(spend caps)が追加され、ネイティブAndroid vibe codingにも対応しましたLIVE — 音声対音声でリアルタイム対話するGemini 3.1 Flash Live Previewが公開されましたIMAGE — 最速・低コストの画像モデルNano Banana 2 Liteが提供され、Gemini Omni FlashもAPIでプレビュー公開されていますLYRIA — 音楽生成モデルLyria 3(clip-preview / pro-preview)が新たに利用できます
記事一覧/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 を分解し、中断しても壊れない転送を組み立てます。

gemini98apps-script10files-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-06-29
Apps Script の時間主導型トリガーが静かに枯渇する — Gemini 自動化を一本のディスパッチャに束ねる
Apps Script の時間主導型トリガーは1ユーザー20本・1日の合計実行時間にも上限があります。Gemini 自動化を増やすたびに無音で止まる問題を、単一ディスパッチャとスケジュール表とハートビートで解く実装を示します。
Workspace 連携2026-04-09
Google Forms × Gemini API 回答自動分析システム構築ガイド:感情分析・テーマ抽出・レポート自動生成まで
Google FormsとGemini APIを連携し、アンケート回答を自動で感情分析・テーマ抽出・レポート化するシステムを実装まで具体的に解説します。Apps Script・Python実装コード付きで今日から導入できる実践ガイド。
Workspace 連携2026-03-29
Gemini × Google Workspace Add-ons 開発ガイド — カスタムAIサイドパネルの構築から Marketplace 公開まで
Google Workspace Add-ons と Gemini API を組み合わせたカスタムAIサイドパネルの開発から Google Workspace Marketplace での公開・収益化まで、実装コード付きで体系的に解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →