マキモノ
業務自動化無料✅ 公式検証済みv1.0.0 / 更新

既存の業務スプレッドシートに「成果物シート」を自動追加する(Driveコネクタでは不可・Sheets API直叩き)

調査結果や候補リストを新規ファイルではなく案件の正本スプレッドシートの新タブとして足す手順。DriveコネクタにaddSheetが無い点、タブ名rangeのクォート、gid付きURL、read-back verify、Windows の file:/// import まで。

出品者: kim@orgiast.jp📖 読込 約1,946トークン (約3円)💰 コスパ 4倍
トークン節約メーター80%節約
ゼロからAIに作らせた場合約9,000トークン
このMDを読ませた場合約1,800トークン

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

この巻物について

「既存の業務スプレッドシートに「成果物シート」を自動追加する(Driveコネクタでは不可・Sheets API直叩き)」は、業務自動化カテゴリのAI指示書(MDファイル)です。調査結果や候補リストを新規ファイルではなく案件の正本スプレッドシートの新タブとして足す手順。DriveコネクタにaddSheetが無い点、タブ名rangeのクォート、gid付きURL、read-back verify、Windows の file:/// import まで。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約7,200トークン(API料金換算で約11円)・80%のトークンを節約できます。

カテゴリ
業務自動化
対応AI
claude-code、cursor、codex-cli
ライセンス
商用利用可 (再販不可)
価格
無料
ゼロから開発時
約9,000トークン
この巻物使用時
約1,800トークン
節約量
約7,200トークン (約11円)
更新日
2026-10-03

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

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

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

中身

既存の業務スプレッドシートに「成果物シート」を自動追加する(Drive コネクタでは不可・Sheets API 直叩き)

調べ物やリスト作成の成果を、新しいファイルではなく案件の正本スプレッドシートの中に新しいタブとして足すための手順。依頼者がそのタブに直接書き込んで運用を続けられる形にする。

なぜ新規ファイルを作らないのか

  • 正本が1ファイルに集約され、関係者が同じ場所だけ見れば済む
  • 案件ごとに成果物ファイルが増えないので、検索と共有権限の管理コストが案件数に比例して増えない
  • 次に同種の案件が来たとき、その1ファイルを読むだけで過去の候補・単価・断られた理由まで再利用でき、外部調査のやり直しが不要になる

前提の落とし穴(ここで時間を失う)

  1. Drive の MCP コネクタ/汎用 Drive API ではシートタブを追加できない。 ファイルの作成・読み書きはできても addSheet が無い。Sheets API を直接叩く必要がある。
  2. Drive コネクタの create_file 系は本文を base64 で要求することがある。 プレーンテキストを渡すと The file content is not a valid base64 string. で落ちる。パラメータ名も name ではなく title 等、実装ごとに違う。エラー文のフィールド名をそのまま読んで直す。
  3. 大きなスプレッドシートの読み取りは応答上限を超える。 100万字級になるとツールの戻り値がファイルに退避される。親の文脈を守るため、退避ファイルは別プロセス(スクリプト)かサブエージェントに解析させ、要点だけ受け取る。
  4. Windows の Node で絶対パスを import するときは file:/// が必要。 import x from 'C:/path/mod.mjs' は ERR_UNSUPPORTED_ESM_URL_SCHEME(Received protocol 'c:')になる。file:///C:/path/mod.mjs と書く。

手順

1. 書き込みスコープのアクセストークンを得る

既存の Drive 連携があるなら、その認証モジュールにスプレッドシート用のスコープを要求する。

import { getDriveToken } from 'file:///<絶対パス>/drive-auth.mjs';
const token = await getDriveToken({ scope: 'https://www.googleapis.com/auth/spreadsheets' });

読み取り専用スコープのトークンを使い回すと addSheet で 403 になる。スコープは明示する。

2. タブを足して値を流し込む(冪等に)

const API = 'https://sheets.googleapis.com/v4/spreadsheets';
const auth = { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' };
const SHEET_ID = '<スプレッドシートID>';
const TITLE = '<タブ名>';

// 既存タブを調べ、同名があれば addSheet を飛ばす(再実行しても壊れない)
const meta = await fetch(`${API}/${SHEET_ID}?fields=sheets.properties`, { headers: auth });
const exists = (await meta.json()).sheets.some((s) => s.properties.title === TITLE);

if (!exists) {
  await fetch(`${API}/${SHEET_ID}:batchUpdate`, {
    method: 'POST', headers: auth,
    body: JSON.stringify({ requests: [{ addSheet: { properties: {
      title: TITLE,
      gridProperties: { rowCount: 60, columnCount: 13, frozenRowCount: 1 },
    } } }] }),
  });
}

// rows は配列の配列。長さが揃っていなくてよい(短い行はそのまま左詰め)
await fetch(`${API}/${SHEET_ID}/values/${encodeURIComponent(`'${TITLE}'!A1`)}?valueInputOption=USER_ENTERED`, {
  method: 'PUT', headers: auth, body: JSON.stringify({ values: rows }),
});

タブ名を range に入れるときはシングルクォートで囲んでから URL エンコードする(日本語・空白・記号を含むタブ名で必須)。

3. read-back verify する(省略しない)

書き込み API が 200 を返しても、range 指定ミスで別タブに入っていることがある。書いた場所を読み返してから完了と言う。

const back = await fetch(`${API}/${SHEET_ID}/values/${encodeURIComponent(`'${TITLE}'!A1:B3`)}`, { headers: auth });
console.log('READBACK', JSON.stringify((await back.json()).values));

4. タブへ直接飛ぶ URL を渡す

const meta2 = await fetch(`${API}/${SHEET_ID}?fields=sheets.properties`, { headers: auth });
const gid = (await meta2.json()).sheets.find((s) => s.properties.title === TITLE).properties.sheetId;
// https://docs.google.com/spreadsheets/d/<ID>/edit#gid=<gid>

gid を付けないと先頭タブが開き、受け取った人が自分で探すことになる。gid まで含めて渡す。

中身の作り方(運用に効く部分)

  • 記入用の空列を用意する。 候補リストなら「ステータス」「金額」「備考」を空欄で並べておく。読む人がその場で書き込めることが、別ファイルにしないことの価値そのもの。
  • 不明は「不明」と書く。 推測で埋めない。後から埋める人が、未調査なのか調査済みで無いのかを区別できる。
  • 末尾に前提条件を併記する。 日時・場所・規模・予算・先方担当など、そのタブ単体で判断できる情報を数行置く。元のファイルの別タブを探させない。
  • 優先度を1列目に置いて並べ替え済みで渡す。 並べ替えを読む人にさせない。

実行環境での注意

  • 使い捨てスクリプトは一時ディレクトリにファイルとして置き、node <file> で実行する。長いコードをシェルの引数に埋め込むと、クォート崩れと安全機構の誤検知の両方を踏む。
  • 同じスクリプトを2回実行しても安全になっているか(addSheet のスキップ、PUT の上書き)を必ず確認してから走らせる。

効果

  • 成果物ファイルの増殖と、そのたびの共有設定が消える
  • 過去案件の再利用が「1ファイルを開く」だけになり、同種案件での外部調査をやり直さずに済む
  • 受け取った人の操作が「リンクを開いて書き込む」だけになる

よくある質問

+「既存の業務スプレッドシートに「成果物シート」を自動追加する(Driveコネクタでは不可・Sheets API直叩き)」とは何ですか?

調査結果や候補リストを新規ファイルではなく案件の正本スプレッドシートの新タブとして足す手順。DriveコネクタにaddSheetが無い点、タブ名rangeのクォート、gid付きURL、read-back verify、Windows の file:/// import まで。

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

ゼロから開発すると約9,000トークンかかりますが、この巻物を使えば約1,800トークンで済みます。差し引き約7,200トークン(API料金換算で約11円)・80%の節約です。

+どうやって使いますか?

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

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

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

+商用利用できますか?

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

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

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

AI代行堂を見る →

関連する巻物

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

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