数十GBの動画をGoogle Driveへ確実に入れる(Drive for Desktopが止まった時の直接アップロード)
Drive for Desktopのキャッシュ破損でサイズ0のまま止まる症状の見分け方と、Drive APIのresumable uploadで直接上げてサイズ照合するまでの手順
約5.8万トークンの節約 (API料金換算で約86円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「数十GBの動画をGoogle Driveへ確実に入れる(Drive for Desktopが止まった時の直接アップロード)」は、Google WorkspaceカテゴリのAI指示書(MDファイル)です。Drive for Desktopのキャッシュ破損でサイズ0のまま止まる症状の見分け方と、Drive APIのresumable uploadで直接上げてサイズ照合するまでの手順この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約5.8万トークン(API料金換算で約86円)・96%のトークンを節約できます。
- カテゴリ
- Google Workspace
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約6万トークン
- この巻物使用時
- 約2,500トークン
- 節約量
- 約5.8万トークン (約86円)
- 更新日
- 2026-10-13
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/gb-google-drive-drive-for-desktop/raw を読み込んで、この指示書どおりに実装して"
中身
数十GBの動画を Google Drive へ確実に入れる(Drive for Desktop が止まったときの直接アップロード)
使う場面
- ファイル転送サービスで受け取った 30〜70GB 級の動画を Google Drive の指定フォルダへ入れたい
- Drive for Desktop(PC のドライブ文字)へコピーしたのに、Drive 上でサイズが 0 のまま増えない
症状と原因の見分け方
- Drive API(または Drive の検索)で対象ファイルの
sizeを見る。0 のまま、または元より小さい - PC の上り通信量を 20 秒測る。ほぼ 0 なら、アップロードは止まっている
- Drive for Desktop のログ(
%LOCALAPPDATA%\Google\DriveFS\Logs\drive_fs.txt)で、ファイル名とFailed to read/Windows error 0x17(CRC エラー)を探す- 出ていれば、キャッシュを置いているディスクの不良セクタが原因。Drive for Desktop ではこのファイルを上げられない
- キャッシュの場所はレジストリ
HKCU\Software\Google\DriveFSのContentCachePath
- ダウンロード先のディスクでも、
cpがInput/output errorやCRCで失敗することがある。古い HDD を置き場にしない
手順
- 健全なディスク(SSD)に、空き容量が足りるか先に確認してから、元の URL から取り直す
- ファイル転送サービスがページ内に
files = [{file, size}]を持つ型なら、ページを開いて cookie を取ってからdownload.php?file=<id>をcurl -O -Jで落とす(-C -と-Jは併用不可) - 取り直したら、バイト数が元の
sizeと一致するか照合する
- ファイル転送サービスがページ内に
- Drive for Desktop 側に残った壊れたコピーを消す(同期の再試行を止めるため)
- Drive API の resumable upload で、指定フォルダへ直接上げる(下のスクリプト)。認証はサービスアカウントのドメイン全体委任(DWD)でユーザーになりすますか、ユーザーの OAuth トークンを使う
- 完了後、
files.list('<フォルダID>' in parents)でサイズが元と一致するか照合する - 一時ファイルを消す。一括の再帰削除が許可ルールに弾かれたら、ファイル単位で消す
resumable upload スクリプト(Node 18+)
// node upload.mjs <file> <folderId> <name>
import { openSync, readSync, fstatSync } from 'node:fs';
import { getToken } from './auth.mjs'; // アクセストークンを返す関数(毎回呼んで期限切れを避ける)
const [file, folder, name] = process.argv.slice(2);
const CHUNK = 64 * 1024 * 1024; // 256KiB の倍数
const fd = openSync(file, 'r'); const total = fstatSync(fd).size;
let res = await fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable&supportsAllDrives=true&fields=id,size', {
method: 'POST', headers: { Authorization: `Bearer ${await getToken()}`, 'Content-Type': 'application/json',
'X-Upload-Content-Type': 'video/mp4', 'X-Upload-Content-Length': String(total) },
body: JSON.stringify({ name, parents: [folder] }) });
const session = res.headers.get('location');
const buf = Buffer.alloc(CHUNK); let offset = 0, fails = 0;
const rangeEnd = r => r ? Number(r.headers.get('range')?.split('-')[1] ?? -1) + 1 : 0;
while (offset < total) {
const len = Math.min(CHUNK, total - offset); readSync(fd, buf, 0, len, offset);
res = await fetch(session, { method: 'PUT', headers: { Authorization: `Bearer ${await getToken()}`,
'Content-Range': `bytes ${offset}-${offset + len - 1}/${total}` }, body: buf.subarray(0, len) }).catch(() => null);
if (res?.status === 200 || res?.status === 201) { console.log(await res.text()); break; }
if (res?.status === 308) { offset = rangeEnd(res); fails = 0; continue; }
if (++fails > 20) throw new Error('too many failures');
await new Promise(s => setTimeout(s, 5000 * fails));
const q = await fetch(session, { method: 'PUT', headers: { Authorization: `Bearer ${await getToken()}`, 'Content-Range': `bytes */${total}` } }).catch(() => null);
if (q?.status === 308) offset = rangeEnd(q);
}
実測: 34GB を約23分(約25MB/s)で完了。失敗時は bytes */<total> で受信済み位置を問い合わせて再開する。
完了の判定
- Drive 上の全ファイルについて、
sizeが元のバイト数と一致すること。PC 上のコピーが終わっただけでは完了にしない
よくある質問
+「数十GBの動画をGoogle Driveへ確実に入れる(Drive for Desktopが止まった時の直接アップロード)」とは何ですか?
Drive for Desktopのキャッシュ破損でサイズ0のまま止まる症状の見分け方と、Drive APIのresumable uploadで直接上げてサイズ照合するまでの手順
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約6万トークンかかりますが、この巻物を使えば約2,500トークンで済みます。差し引き約5.8万トークン(API料金換算で約86円)・96%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
GAS完全自動化テンプレ — Driveコマンドキュー方式
Google Apps Script の「毎回エディタで▶実行」を根絶。Drive 経由のコマンドキューで、初回1クリック以降は AI がすべての GAS 関数をリモート実行できるようになるテンプレート指示書。
人間の手入力台帳を壊さずに自動更新する — GAS Web App upsert 設計
各PC/各拠点の点検結果を、人間が手運用しているスプレッドシート台帳へ自動反映する。手入力列とコメントを絶対に壊さない突合設計、タブ/列の解決、並行POST対策、配布シークレットの落とし穴まで。
数式まみれの業務スプレッドシートを、Webアプリから壊さずに編集させる型
ArrayFormula と per-row 数式が混在する台帳を、セル単位 allowlist・dry-run 既定・適用前バックアップ・触っていないセルの数式不変検査で安全に書き換える設計手順。列ごとの数式復元と、テストが緑のまま壊れる典型例つき。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア