鍵の無いPCから共有メールボックスでDriveのPDF添付つき返信を下書き→確認後に送信(GitHub Actions+ドメイン全体の委任)
SA鍵がGitHubシークレットにしかない環境で、DriveのPDFを添付した返信下書きを作り、人の確認後にdrafts.sendで送る手順。scope不足403と多重run事故の回避つき
約5.8万トークンの節約 (API料金換算で約86円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「鍵の無いPCから共有メールボックスでDriveのPDF添付つき返信を下書き→確認後に送信(GitHub Actions+ドメイン全体の委任)」は、Google WorkspaceカテゴリのAI指示書(MDファイル)です。SA鍵がGitHubシークレットにしかない環境で、DriveのPDFを添付した返信下書きを作り、人の確認後にdrafts.sendで送る手順。scope不足403と多重run事故の回避つきこの巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約5.8万トークン(API料金換算で約86円)・96%のトークンを節約できます。
- カテゴリ
- Google Workspace
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約6万トークン
- この巻物使用時
- 約2,500トークン
- 節約量
- 約5.8万トークン (約86円)
- 更新日
- 2026-10-19
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/pc-drive-pdf-github-actions/raw を読み込んで、この指示書どおりに実装して"
中身
鍵がローカルに無いPCから、共有メールボックスで「Drive の PDF を添付した返信下書き」を作り、人の確認後に送る(GitHub Actions + ドメイン全体の委任)
こんな時に使う
- 返信を送るのは共有メールボックス(例:
<共有アドレス>@<自社ドメイン>)だが、作業PCにはそのメールボックスの OAuth トークンも、サービスアカウント鍵も無い - 鍵は GitHub リポジトリのシークレットにだけある(例:
GOOGLE_SA_JSON。中身が base64 のこともある) - 添付は Google Drive 上の PDF。AI のコネクタで添付を base64 で手渡しすると、書き写しの途中で壊れる
- 送信前に人が文面と添付を確認したい
前提
- サービスアカウントにドメイン全体の委任があり、次のスコープが管理コンソールで許可済み
https://www.googleapis.com/auth/gmail.composehttps://www.googleapis.com/auth/gmail.readonlyhttps://www.googleapis.com/auth/drive
- そのリポジトリに push できる(
gh auth statusで確認する)
手順
- 使い捨てブランチを main から作る:
gh api -X POST repos/<owner>/<repo>/git/refs - スクリプトを置く(npm 依存なし、
node:cryptoだけ)。中身は次のとおり。- トークン取得: RS256 の JWT を自作する(
iss=SA のメール、sub=成り代わる人、scope=空白区切り)。それをhttps://oauth2.googleapis.com/tokenにgrant_type=urn:ietf:params:oauth:grant-type:jwt-bearerで送る - PDF 取得:
GET drive/v3/files/<id>?alt=media&supportsAllDrives=true。subはファイル所有者にする。ダメなら共有メールボックスで再試行 - 元メールのヘッダ取得:
messages/<id>?format=metadata&metadataHeaders=Message-ID&metadataHeaders=References&metadataHeaders=Subject - MIME を組む:
multipart/mixed。本文はtext/plain; charset=UTF-8(base64)。添付はContent-Disposition: attachment; filename*=UTF-8''<encodeURIComponent(名前)>。件名は=?UTF-8?B?…?=にする。In-Reply-ToとReferencesも付ける - 下書き作成:
POST users/me/draftsに{message:{threadId, raw: base64url(mime)}} - 読み戻し:
drafts/<id>?format=fullで宛先・件名・スレッド・添付サイズを JSON に出し、actions/upload-artifactで回収する
- トークン取得: RS256 の JWT を自作する(
- workflow を置く:
on: push: branches: [<使い捨てブランチ>]にする。workflow_dispatchは既定ブランチにファイルが無いと 404 になるので使わない。シークレットはenv:で渡す - 結果を回収して確かめる:
gh run watch <id> --exit-status→gh run download <id> -D out。添付のサイズが元 PDF と一致するかを見る - 人が下書きを確認する。OK が出たら、同じ型のスクリプトで次を行う
- 送る直前に下書きの宛先とスレッドを照合し、違えば送らない
POST users/me/drafts/send {id}で送るmessages/<id>でSENTラベルと添付を読み戻す
- ブランチを削除する:
gh api -X DELETE repos/<owner>/<repo>/git/refs/heads/<branch>。シークレットを使える workflow を残さないため
ハマりどころ(実測)
- スコープを
gmail.composeだけにすると、元メールの metadata 取得が 403 になる(insufficient scopes)。gmail.compose gmail.readonlyを空白区切りで両方要求する - Contents API でファイルを1つずつ PUT すると1回ずつ commit になり、workflow がある枝では commit ごとに run が立つ。3本並走して二重下書きになりかけた。対策は次のとおり
- workflow ファイルを最後に置く(最初の push では workflow がまだ無いので run が立たない)
- 再 push する時は
concurrency:を付けるか、余分な run をすぐgh run cancelする - 作成後は下書き一覧を宛先で検索し、1通だけかを確かめる
- シークレットが base64 のことがある。先頭が
{でなければ復号してからJSON.parseする - 古い下書きを消すのは、新しい下書きの読み戻しで添付と threadId を確認できてからにする
よくある質問
+「鍵の無いPCから共有メールボックスでDriveのPDF添付つき返信を下書き→確認後に送信(GitHub Actions+ドメイン全体の委任)」とは何ですか?
SA鍵がGitHubシークレットにしかない環境で、DriveのPDFを添付した返信下書きを作り、人の確認後にdrafts.sendで送る手順。scope不足403と多重run事故の回避つき
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約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 既定・適用前バックアップ・触っていないセルの数式不変検査で安全に書き換える設計手順。列ごとの数式復元と、テストが緑のまま壊れる典型例つき。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア