マキモノ
Google Workspace無料✅ 公式検証済みv1.0.0 / 更新

数十GBの動画をGoogle Driveへ確実に入れる(Drive for Desktopが止まった時の直接アップロード)

Drive for Desktopのキャッシュ破損でサイズ0のまま止まる症状の見分け方と、Drive APIのresumable uploadで直接上げてサイズ照合するまでの手順

出品者: kim@orgiast.jp📖 読込 約1,714トークン (約3円)💰 コスパ 34倍
トークン節約メーター96%節約
ゼロからAIに作らせた場合約6万トークン
このMDを読ませた場合約2,500トークン

約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 のターミナルに貼るだけです。

⬇ .md をダウンロード
claude "https://makimono-md.vercel.app/api/v1/files/gb-google-drive-drive-for-desktop/raw を読み込んで、この指示書どおりに実装して"
claude-codecursorcodex-cliライセンス: 商用利用可 (再販不可)

中身

数十GBの動画を Google Drive へ確実に入れる(Drive for Desktop が止まったときの直接アップロード)

使う場面

  • ファイル転送サービスで受け取った 30〜70GB 級の動画を Google Drive の指定フォルダへ入れたい
  • Drive for Desktop(PC のドライブ文字)へコピーしたのに、Drive 上でサイズが 0 のまま増えない

症状と原因の見分け方

  1. Drive API(または Drive の検索)で対象ファイルの size を見る。0 のまま、または元より小さい
  2. PC の上り通信量を 20 秒測る。ほぼ 0 なら、アップロードは止まっている
  3. 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
  4. ダウンロード先のディスクでも、cp が Input/output error や CRC で失敗することがある。古い HDD を置き場にしない

手順

  1. 健全なディスク(SSD)に、空き容量が足りるか先に確認してから、元の URL から取り直す
    • ファイル転送サービスがページ内に files = [{file, size}] を持つ型なら、ページを開いて cookie を取ってから download.php?file=<id> を curl -O -J で落とす(-C - と -J は併用不可)
    • 取り直したら、バイト数が元の size と一致するか照合する
  2. Drive for Desktop 側に残った壊れたコピーを消す(同期の再試行を止めるため)
  3. Drive API の resumable upload で、指定フォルダへ直接上げる(下のスクリプト)。認証はサービスアカウントのドメイン全体委任(DWD)でユーザーになりすますか、ユーザーの OAuth トークンを使う
  4. 完了後、files.list('<フォルダID>' in parents)でサイズが元と一致するか照合する
  5. 一時ファイルを消す。一括の再帰削除が許可ルールに弾かれたら、ファイル単位で消す

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で頼むだけで、仕事が完成」。

AI代行堂を見る →

関連する巻物

この巻物、誰かのトークンも救えます

𝕏 で節約レシートをシェア