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

Googleユーザーデータを認証なしローカルアプリに出す — GAS→公開HTTPS橋渡し

自作ダッシュにGoogleタスク/カレンダー等を、アプリにOAuthを持たせずGAS→公開HTTPS ingestへPOST→ローカルキャッシュ→Widgetで表示。Web App公開/clasp run/SA不要。funnel実ポート確認・秘密の置き場・basePath・本番再ビルド等の実測ハマりどころ付き

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

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

この巻物について

Googleユーザーデータを認証なしローカルアプリに出す — GAS→公開HTTPS橋渡し」は、Google WorkspaceカテゴリのAI指示書(MDファイル)です。自作ダッシュにGoogleタスク/カレンダー等を、アプリにOAuthを持たせずGAS→公開HTTPS ingestへPOST→ローカルキャッシュ→Widgetで表示。Web App公開/clasp run/SA不要。funnel実ポート確認・秘密の置き場・basePath・本番再ビルド等の実測ハマりどころ付きこの巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約3.6万トークン(API料金換算で約54円)・90%のトークンを節約できます。

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

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

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

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

中身

Googleユーザーデータを「認証なしの自作ローカルアプリ」に表示する — GAS→公開HTTPS橋渡し

これは何を解決するか

自分で立てたダッシュボード(Next.js 等、社内や自宅で動く)に、**Google タスク / カレンダー / Keep など「本人のGoogleユーザーデータ」**を表示したい。だがアプリに Google OAuth を実装したくない/できない。しかも組織の Workspace ポリシーで Apps Script の Web App 公開共有clasp run が禁止、サービスアカウントは DWD 無しでは本人のタスクを読めない——という詰みがち構成。

解決: 認証をアプリに持たせず、**GAS を「本人権限を持つ橋」**として使う。GAS が Google データを読み、既に公開されている HTTPS 経路(トンネル等)でアプリの受け口に POST するだけ。

全体像

[GAS(本人権限: tasks/calendar 等)] --毎時トリガー--> データ取得
   └─ UrlFetchApp.fetch(POST, 共有シークレット) ──▶ [公開HTTPS: 例 トンネル/リバースプロキシ]
                                                        └─▶ [アプリ /api/<name>/ingest]
                                                              └─ ローカルキャッシュ(JSON)に保存
[アプリ Widget] --GET /api/<name>--> キャッシュを読むだけで描画
  • Web App 公開デプロイ不要(ポリシーで塞がれていても回避できる)
  • clasp run 不要(機微スコープの認可が通らない環境でもOK)
  • GCP サービスアカウント/ DWD 不要

実装(要点のみ・言語非依存で読み替え可)

アプリ側 A) 受け口 /api/<name>/ingest(POST)

  • ヘッダ x-<name>-secret を環境変数の共有シークレットと定数時間比較。不一致は 403。
  • body(JSON) を検証し、~/<状態ディレクトリ>/<name>-cache.json に保存して {ok:true, count} を返す。

アプリ側 B) 表示用 /api/<name>(GET)

  • 認証(アプリ既存の仕組み)→ 上記キャッシュを読んで返すだけ。mtime で鮮度(stale)も返すと良い。

アプリ側 C) Widget

  • GET を叩いてリスト表示。1分間隔でポーリング。空/未同期の状態表示も用意。

GAS 側

var INGEST_URL = 'https://<公開ホスト>/<basePathがあれば>/api/<name>/ingest'; // URLは非機密→コード直書き可
function pushToApp(){
  var secret = PropertiesService.getScriptProperties().getProperty('<NAME>_INGEST_SECRET'); // 秘密はここ
  if (!secret) return {ok:false, error:'secret未設定'};
  var payload = { updatedAt:new Date().toISOString(), items: /* Tasks/Calendar 等を読んで整形 */ [] };
  var res = UrlFetchApp.fetch(INGEST_URL, {
    method:'post', contentType:'application/json',
    headers:{'x-<name>-secret': secret},
    payload: JSON.stringify(payload), muteHttpExceptions:true
  });
  return { ok:res.getResponseCode()===200, code:res.getResponseCode() };
}
function installPushTrigger(){ // handler名でフィルタしてから作る(他トリガーを巻き添え削除しない)
  ScriptApp.getProjectTriggers().forEach(function(t){ if(t.getHandlerFunction()==='pushToApp') ScriptApp.deleteTrigger(t); });
  ScriptApp.newTrigger('pushToApp').timeBased().everyHours(1).create();
}
  • appsscript.jsonoauthScopes外部リクエスト権限.../auth/script.external_request)と、読むデータのスコープ(tasks 等)を追加。追加後は再承認1回

ハマりどころ(実測)

  1. 公開URLの実ポート/経路を思い込みで書かない。 トンネルの status を必ず確認する。実測では「公開443 → 別アプリ(ポートX) が /subpath/* を本体(ポートY) にリバースプロキシ」しており、想定していた別ポートは 404 だった。POST もプロキシされるかを先に curl で確かめてから GAS の URL を確定する。
  2. 秘密(共有シークレット)を中継ファイルやキューに入れない。 自動化のコマンドキュー等に秘密を載せると安全機構に正しくブロックされる。GAS 側は Script Property に手で1回だけ登録、アプリ側は .env.local。URL は非機密なのでコードに直書きでよい。
  3. フレームワークの basePath。 ルーティングに接頭辞が付くと公開パスも変わる。GET/POST 両方のパスに反映する。
  4. 本番モードは再ビルドが要る。 本番起動(例: next start)は新しい API ルートや新 env をホットリロードしない。ビルド→プロセス再起動して初めて反映される。dev の自動反映を本番と混同しない。
  5. 検証は3点で完結させる。 ①GAS の push 戻り値(HTTP 200+件数)②ローカルキャッシュ JSON の件数 ③Widget の実描画。どれか1つでも欠けたら「動いた」と言わない。

使わない方が良いケース

  • アプリが最初から Google OAuth を持っている / 持たせてよい → 直読みの方が素直。
  • データが機密で外部公開が絡む操作(例: 財務諸表を「リンクを知っている全員」に公開)→ これは安全機構が自動実行を止める。人手(正規UI)に委ねるのが正しい。

応用

Tasks を Calendar / Keep / スプレッドシートの抽出結果などに差し替えれば同じ型で横展開できる。「本人権限の読み取り」を GAS に集約し、アプリはキャッシュを読むだけの薄い表示層に保つのが要。

よくある質問

「Googleユーザーデータを認証なしローカルアプリに出す — GAS→公開HTTPS橋渡し」とは何ですか?

自作ダッシュにGoogleタスク/カレンダー等を、アプリにOAuthを持たせずGAS→公開HTTPS ingestへPOST→ローカルキャッシュ→Widgetで表示。Web App公開/clasp run/SA不要。funnel実ポート確認・秘密の置き場・basePath・本番再ビルド等の実測ハマりどころ付き

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

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

どうやって使いますか?

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

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

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

商用利用できますか?

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

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

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

AI代行堂を見る →

関連する巻物

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

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