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

大きいGoogleスプレッドシートをAIに全件読ませる(自然言語の書き出しは黙って切られる)

行数の多いシートはコネクタの自然言語書き出しだと途中で切れ、AIは成功と報告する。xlsxをbase64で取りZIPとして自力で開いて全件取り込む手順と、部分一致の誤ヒットを止めるガードまで。

出品者: nishi@orgiast.jp📖 読込 約2,678トークン (約4円)💰 コスパ 14
トークン節約メーター90%節約
ゼロからAIに作らせた場合4.2万トークン
このMDを読ませた場合4,200トークン

3.8万トークンの節約 (API料金換算で約57円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。

この巻物について

大きいGoogleスプレッドシートをAIに全件読ませる(自然言語の書き出しは黙って切られる)」は、Google WorkspaceカテゴリのAI指示書(MDファイル)です。行数の多いシートはコネクタの自然言語書き出しだと途中で切れ、AIは成功と報告する。xlsxをbase64で取りZIPとして自力で開いて全件取り込む手順と、部分一致の誤ヒットを止めるガードまで。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約3.8万トークン(API料金換算で約57円)・90%のトークンを節約できます。

カテゴリ
Google Workspace
対応AI
claude-code、cursor、codex-cli
ライセンス
商用利用可 (再販不可)
価格
無料
ゼロから開発時
約4.2万トークン
この巻物使用時
約4,200トークン
節約量
約3.8万トークン (約57円)
更新日
2026-09-24

使い方 (AIに渡す3つの方法)

いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。

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

中身

大きい Google スプレッドシートを AI に「全件」読ませる(自然言語書き出しは途中で切れる)

これは何の指示書か

AI アシスタント(Claude / ChatGPT など)に Google ドライブ連携を付けて「この表を読んで」と頼むと、 行数の多いシートでは途中までしか返らない。しかも AI は「読めた」と報告するので、 不完全なデータで実装が進み、後工程で初めて破綻する

この指示書は、その取りこぼしを起こさずに 全行を確実に取り込む手順を示す。 表計算ファイルを .xlsx のまま取得し、ZIP として自力で展開して読む。追加ライブラリは要らない。

対象読者: 業務スプレッドシートを参照するアプリ・自動化を AI に作らせる人。


1. まず知っておく失敗

失敗A: 自然言語の書き出しは黙って切られる

コネクタの「ファイル内容を読む」系 API は、表を人間が読みやすいテキストに変換して返す。 大きいファイルでは上限で打ち切られるが、打ち切られた旨が本文からは分からないことがある。

実測例: 4,190 行のシートで、取り込めたのは 570 件だけ(13%)。 AI はその 570 件で照合ロジックを実装し、テストで「引き当てられない」と出て初めて発覚した。

検知のしかた: 取り込み後に必ず 件数を数え、元の表の行数と突き合わせる。 「それらしいデータが返ってきた」を成功と見なさない。

失敗B: OAuth スコープ不足で export だけ 403

CLI ツール(例: Apps Script 用の認証)のトークンを流用すると、 メタデータ取得は 200 なのに、CSV/xlsx への書き出しだけ 403 になることがある。 drive.file(そのアプリが作ったファイルのみ)しか持っていないのが原因で、 drive.readonly が要る。トークンを使い回す前にスコープを確認する

失敗C: ブラウザ自動化での取得も落とし穴が多い

ログイン済みプロファイルを使ったヘッドレス取得は、 別アカウントでログインしていると「ファイルを開くことができません」の HTML が返り、 それを CSV として保存してしまう。保存した中身の先頭数行を必ず目視する。


2. 正解の手順: .xlsx で取って自力で開く

2-1. .xlsx を base64 で取得する

コネクタの「ファイルをダウンロード」系 API に、書き出し形式を明示する。

exportMimeType: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

返ってくるのは { content: "<base64>", title, mimeType } の JSON。 巨大なので、AI の文脈に載せずファイルへ保存してから処理する(多くのツールは自動でファイルに退避してパスを教えてくれる)。

2-2. .xlsx は ZIP なので、そのまま開ける

追加ライブラリは不要。Python の標準ライブラリだけで読める。

import json, io, base64, zipfile, re

data = json.load(io.open("<ダウンロード結果のJSON>", encoding="utf-8"))
raw = base64.b64decode(data["content"])
open("book.xlsx", "wb").write(raw)

z = zipfile.ZipFile("book.xlsx")
print(z.namelist()[:10])   # xl/workbook.xml, xl/sharedStrings.xml, xl/worksheets/sheet1.xml ...

2-3. シート名から実体ファイルを特定する

xl/workbook.xml のシート名と xl/_rels/workbook.xml.rels の関係 ID を突き合わせる。 シート名の順番と sheetN.xml の番号は一致しないので、必ず rels 経由で引く。

wb   = z.read('xl/workbook.xml').decode('utf-8')
rels = z.read('xl/_rels/workbook.xml.rels').decode('utf-8')
relmap = dict(re.findall(r'Id="(rId\d+)"[^>]*Target="([^"]+)"', rels))
sheets = re.findall(r'<sheet[^>]*name="([^"]+)"[^>]*r:id="(rId\d+)"', wb)
target = {name: relmap[rid] for name, rid in sheets}["<読みたいシート名>"]

2-4. 文字列は共有テーブルにある

セルの値が t="s" のとき、<v> の中身は xl/sharedStrings.xml の添字であって文字列ではない。 ここを読み飛ばすと全部が数字に見える。

ss = []
for si in re.finditer(r'<si>(.*?)</si>', z.read('xl/sharedStrings.xml').decode('utf-8'), re.S):
    ss.append(''.join(re.findall(r'<t[^>]*>(.*?)</t>', si.group(1), re.S)))

2-5. 行とセルを列記号のまま拾う

列を数えるのではなく セルの r 属性(例 D12)から列記号を取る。 空セルは XML に現れないので、位置で数えるとズレる。

sheet = z.read('xl/' + target).decode('utf-8')
rows = {}
for r in re.finditer(r'<row[^>]*r="(\d+)"[^>]*>(.*?)</row>', sheet, re.S):
    cells = {}
    for c in re.finditer(r'<c r="([A-Z]+)\d+"([^>]*)>(.*?)</c>', r.group(2), re.S):
        col, attrs, body = c.group(1), c.group(2), c.group(3)
        v = re.search(r'<v>(.*?)</v>', body, re.S)
        if 't="s"' in attrs and v:
            val = ss[int(v.group(1))]
        else:
            t = re.search(r'<is>.*?<t[^>]*>(.*?)</t>', body, re.S)
            val = t.group(1) if t else (v.group(1) if v else '')
        cells[col] = val.strip()
    rows[int(r.group(1))] = cells

print("取得行数:", len(rows))   # ← 元の表の行数と必ず突き合わせる

これで 「D 列の品名」「L 列の保管場所」 のように、人が表で見ているのと同じ列記号でアクセスできる。


3. 取り込んだ後に必ずやる 2 つの検算

  1. 件数の突き合わせ: 取得行数と、表の見た目の行数(またはフィルタ後の件数)を比べる。 桁が違えば取りこぼし。
  2. 列の分布を見る: 目的の列に入っている値を集計して出す。 例: 保管場所の列 → A倉庫 1937 / B倉庫 430 / 所在不明 520 / 空 464。 「所在不明」「0」「空」のようなゴミが必ず混ざるので、採用する値を明示的に列挙して絞る (拾う値のホワイトリストを書く。捨てる値のブラックリストにしない)。

4. 部分一致で引き当てるときの必須ガード

取り込んだ表を「商品名 → 保管場所」のようなあいまい照合に使うと、 一般語で誤ヒットして、誰も気づかない誤った値を出力する

実測した事故: 存在しない架空の商品名を渡したら、「商品」という 2 文字が 別アイテムの「…商品コード51315」に一致し、無関係な保管場所を自信満々に返した。 これがそのまま見積書に載れば、誤った発送元と送料を顧客に提示することになる。

必ず入れるガード:

  • 一般語の除外リストを持つ(商品 / セット / 用品 / サイズ / タイプ / 本体 / 専用 / 一式 / 対応 / set / type …)
  • 2 文字の語は原則使わない。使うならカタカナのみ・英数字のみに限る
  • 候補が多すぎる語は捨てる(その語に 50 件以上ヒットするなら、その語では特定できていない)
  • 引き当てられなかったときは null を返す。近いものを無理に返さない
  • テストに「存在しない入力 → null」を必ず 1 件入れる(これが無いと誤ヒットに永遠に気づかない)

5. そのまま使える依頼文(AI に貼る)

<スプレッドシートのファイルID> の「<シート名>」シートを全件取り込みたい。

手順:
1. Drive コネクタの「ファイルをダウンロード」で
   exportMimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
   を指定し、結果はファイルへ保存すること(文脈に載せない)
2. base64 をデコードして .xlsx として保存し、zipfile で開く
3. workbook.xml と _rels/workbook.xml.rels からシート名→sheetN.xml を特定する
4. sharedStrings.xml を読み、t="s" のセルを文字列に戻す
5. セルの r 属性から列記号を取り、<列記号>=<意味> の対応で辞書化する
6. **取得行数と、値の分布(上位15件)を必ず出力する**

自然言語の書き出し(read_file_content 相当)は途中で切れるので使わないこと。
取得件数が想定より1桁少ない場合は、成功と報告せず原因を先に報告すること。

6. 効果

  • 取りこぼし 13%(570/4,190)→ 全件
  • 「読めたつもりで実装 → テストで破綻 → データ取り直し → 実装やり直し」の 1 往復を丸ごと削減
  • 誤ヒットのガードにより、誤った値を顧客向け文書に出す事故を未然に防止

よくある質問

「大きいGoogleスプレッドシートをAIに全件読ませる(自然言語の書き出しは黙って切られる)」とは何ですか?

行数の多いシートはコネクタの自然言語書き出しだと途中で切れ、AIは成功と報告する。xlsxをbase64で取りZIPとして自力で開いて全件取り込む手順と、部分一致の誤ヒットを止めるガードまで。

どれくらいトークン(費用)を節約できますか?

ゼロから開発すると約4.2万トークンかかりますが、この巻物を使えば約4,200トークンで済みます。差し引き約3.8万トークン(API料金換算で約57円)・90%の節約です。

どうやって使いますか?

無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。

どのAIツールに対応していますか?

claude-code、cursor、codex-cli に対応しています。

商用利用できますか?

ライセンスは「商用利用可 (再販不可)」です。

🤝 自分でAIを動かすのは、まだ不安…という方へ

この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。

AI代行堂を見る →

関連する巻物

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

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