ゼロからAIでプログラミングするのはもうやめよう:AIエージェントにGoogle Apps Scriptの連携と開発を直接任せる方法
AIで無駄を宝に変える — Claude Design & Claude Codeを使ってあなただけのパーソナルデスクトップダッシュボードを作る例。

完成品デモ
長年引き出しにしまっていた iPhone 8 Plus が、個人専用のデスクトップダッシュボードデッキに生まれ変わりました。内容は完全カスタマイズ、制作は完全無料です。
前書き
TL;DR あなたが AI を使って自分だけの個人デスクトップダッシュボードを作る方法だけに興味があるなら、この章は無視してください。
大体2021年頃からGoogle Apps Scriptを使って小さなツールを開発し、ワークフローの自動化と最適化を行っていました。当時はAIもなく、RPAやプロセス自動化もほとんど話題になっていませんでした。単純にチームの協力効率を上げたり、個人の生活の快適さを高めたりすることが目的で、すべてのスクリプトは私が一行一行手で書いていました(今から見ると昔ながらのプログラミングです)。しかし、一番難しかったのはプログラミング自体ではなく、いかに連携できるか、どうやって連携するか、そして思考をどう枠から飛び出させるかでした。
以前に行った事例
-
目標 — 外部公開のメール窓口で受信したメールを Slack の作業チャンネルに転送したい。
技術的に Google Apps Script は Gmail 受信時のイベントを持っていないため、別の方法としてトリガー機能を使い、毎分(またはそれ以上の間隔で)実行します:未読メールをチェック ➡️ 内容を取得 ➡️ HTMLを除去して Slack に転送 ➡️ 既読にマーク。
特定のメール(送信者や件名)だけを対象にしたい場合は、Gmail でラベルフィルターを設定し、未読メールのチェックを未読かつ該当ラベルのメールに変更すれば実現可能です。
ref: 「 運用 Google Apps Script で Gmail メールを Slack に転送 」 -
目標 — GAのトラフィックやCrash-free rateを自動でSlackの作業チャンネルに送信する。
Google Apps ScriptにはAnalyticsDataやAdSenseのライブラリが標準で用意されており、パラメータを設定するだけでほぼ無痛で統合可能です。
アプリでクラッシュの詳細やTop 10を調べたい場合は、さらにFirebaseからBigQueryへデータを連携し、Google Apps ScriptでBigQueryライブラリを読み込み、SQLクエリを実行すれば実現できます。
ref: 「 Crashlytics + Google Analytics 自動でAppのCrash-Freeユーザー率を取得 」、「 Crashlytics + Big Queryでよりリアルタイムで便利なCrash追跡ツールを作る 」 -
目標 — 運営データを自動で Google Sheet に集約する。
前述の方法に加え、運営データをチームのテレビウォールで一目で確認できるように Web App を作成しました。その際の技術的な問題は、一部のデータが社内ネットワーク内にあり、外部からアクセスできなかったことです。 幸いにも、逆に社内ネットワークからスケジュール処理を行い、毎日データを Google Apps Script の Web App に送信し、受信後に処理して Google Sheet に書き戻す形で対応しました。
ref:「 使用 Google Apps Script 實現每日數據報表 RPA 自動化 」 -
目標 — 既存のリソースで簡単なアプリパッケージプラットフォームを構築する
当時の背景は、アプリのパッケージサービスが GitHub Actions に移行したものの、非エンジニアチームもアプリのパッケージが必要で、これまでは手作業で対応していた。そこで、社内チーム全員が使えるサービスとして GitHub Actions を連携し、パッケージを実行できる仕組みが求められた。
Google Apps Script の Web アプリをプラットフォームにして、組織内のアカウントのみ利用可能に制限。プラットフォームのフォームにパッケージ情報を入力すると GitHub Actions(GitHub API)をトリガーし、パッケージ完了の Slack 通知を送る。
パッケージされたアプリは Firebase App Distribution にアップロードされるが、Google Apps Script には標準のライブラリがないものの、調べたところ googleapis を直接使って実現可能で、最終的には問題なく連携できた。
ref:「 Google Apps Script Web App で GitHub Actions と連携し無料で使いやすいパッケージツールプラットフォームを構築する 」
まだ小さな事例は挙げていませんが、要するに「方法は困難より多い」ということを伝えたいです。実際にプログラムを書くことはむしろ簡単で、いかに多くの障害を乗り越えて連携させるかが難しいのです。
技術的制限
「方法は困難より多い」という前提は、技術的に可能で合理的であることです。言い換えれば、「方向が間違っていれば、努力しても無駄」ということです。実際にプログラムを書く必要はありませんが、いつ Google Apps Script を使って小さなツールを「選択」できるかを必ず理解しておくべきです。
-
User-Agent をカスタマイズできない: セキュリティと悪用防止のため、Google Apps Script の User-Agent は自分で指定できません。(ただし、他の Header フィールドは指定可能です)
影響: 一部の特殊な API サービスでは User-Agent に情報を含める必要があったり、対象のサイトや API が Google Apps Script の User-Agent をブロックする場合があります。このような場合は制限が厳しく、利用できません。
回避策: どうしても使いたい場合は Cloudflare Worker を使ってプロキシ経由で接続する方法があります。 -
最長実行時間 6 分間: 1 回の実行は最大 6 分間までで、処理が大きすぎる場合や多すぎる場合は分割して実行することを推奨します。
また、総使用量にも上限があり、例えばトリガーは 1 日あたり最大 90 分間の実行が可能です。(ただしこれはソフトリミットのようで、私のスクリプトは多くて上限を超えているはずですが、ブロックされていません) -
単一実行は同期ブロッキングが基本: 単一の実行内で複数のスレッドを使って並行処理することはできません。処理に時間がかかる場合や大量の並行処理が必要な場合は、複数回に分けて実行し、スケジュールトリガーを利用することを推奨します。
-
コールドスタート: Faasサービス共通の問題で、タスクが長時間トリガーされないとスリープ状態になり、再度トリガーされる際に待ち時間が長くなります。
これに加え、タスクが同期(ブロッキング)実行である制限があるため、Webhookとして他サービスから呼び出すとリクエスト失敗と判定されやすく、リクエストや受信、実行が重複する可能性があります。
例えば、SlackはWebhookサーバーが3秒以内に応答することを厳しく要求しており、過去の経験ではこの問題に頻繁に直面しています。 -
Web App API はリダイレクトします: セキュリティ上の理由から、Content service が返す内容は一度きりの
script.googleusercontent.comURL にリダイレクトされます。HTTP クライアントはリダイレクトのフォローに対応している必要があります。
一部の Webhook サービスは自動で 302 リダイレクトしないと失敗します(例:Jira Webhook)。 -
Web App HTML: ウェブページの上部に濫用防止の声明があり、本当の RWD は実現できません(ページは実際には Google のフレーム内の iframe です)。URL は見た目が悪くカスタマイズできず、PWA の全画面表示もできません。

- サービス制限: 一部のサービスには利用制限がありますが、通常の使用では上限に達することはほとんどありません。ただし、高頻度でリアルタイムの応答が必要な場合は、制限にかかりやすくなります。

https://developers.google.com/apps-script/guides/services/quotas?hl=zh-tw
優位性と機能
利点や機能を確認しましょう。
最大の利点は、Google純正の関連サービスと直接かつ簡単に連携できることです。Webアプリのアクセス権はスクリプト所有者本人、組織内のメンバー、ログイン中のGoogleアカウント、全員の中から選択可能で、複雑なOAuthの手続きを自分で行う必要がなく、ワンクリックで設定・完了・実行が可能です:
組み込み統合サービス Built-in Services: GAS サービスで参照しなくても使用可能。
-
DocumentApp → Google ドキュメント
-
SpreadsheetApp → Google スプレッドシート
-
SlidesApp → Google スライド
-
FormApp → Google フォーム
-
GmailApp → Gmail
-
CalendarApp → Google カレンダー
-
DriveApp → Google ドライブ
-
SitesApp → Google サイト
-
Maps → マップ / 距離 / ルート
-
翻訳
高度なサービス Advanced Services:
GAS サービスで参照を有効にする必要があります。
-
Sheets API
-
Drive API
-
Calendar API
-
Gmail API
-
Analytics API / Analytics Data API
-
BigQuery API
-
Adsense API
-
YouTube Data API
-
Tasks API
-
Googleapis(その他/GCP)
ツール / システムサービス:
-
UrlFetchApp → 外部 API を呼び出す
-
PropertiesService → キー・バリューの保存
-
CacheService → キャッシュ
-
LockService → 競合防止の制御
-
Utilities → 日付 / ハッシュ / Base64
-
Logger → ログ出力
-
HtmlService → Web UI を作成し、Ajax 非同期でコンテンツ更新をサポート
-
ContentService → API エンドポイントの作成
-
Trigger → トリガーによる自動実行
基本的に開発に必要なものは揃っており、実務ではこれらのサービスを組み合わせて連携させることで、ワークフローの自動化が実現できます。例えば:
-
GAのトラフィック/Crash-free rateを自動でSlackの作業チャンネルに送信:
Analytics Data APIでデータを取得し、PropertiesServiceでSlack Botトークンを保存、UrlFetchAppでSlack送信APIを呼び出す -
運営データを自動でGoogle Sheetに集計し、データDashboard Webを作成:
Triggerでスケジュール実行するFunction、LockServiceで自分だけが実行していることを保証、Analytics Data APIでデータ取得、UrlFetchAppで外部サービスのデータ取得、SpreadsheetAppでGoogle Sheetに書き込み、HtmlServiceでWebアプリのインターフェースを出力、ContentServiceでJSONデータを出力+CacheServiceでデータをキャッシュ
Cloud Function / Lambda のような FAAS との違い
Google Apps Script は Google サービスを中心とした FAAS スクリプトツールと見なせます。制限は多いですが、現在は完全無料で、Google サービスとスムーズに連携できます。 他の FAAS サービスは通常有料で、一部無料枠がありますが、Google サービスとの連携には正式な IAM や OAuth の手続きが必要で、やや複雑です。
適していないシーン
-
Google ファミリー以外、例えば Microsoft Office や OneNote と連携したい場合…
-
ローカルとクラウドのハイブリッドは、n8n や AI Agent による処理に適しています。
-
複雑な計算や大量データの処理では、各実行フェーズが最大6分で完了しないことがあります。
-
大規模なウェブサイトのクローリングやチケット争奪プログラムは避けたほうがよいです。Google Apps Script は簡単にブロックされたり、Cloudflare のアンチスクレイピングに阻止されたりします。
適したシーン
個人やチーム内のワークフロー連携について、私の場合、多くのスクリプトを使って日常のルーチン業務を管理しています。例えば、毎日 zhgchg.li のサイトトラフィック概要を通知したり、GitHubリポジトリのIssuesを管理したり、Google Sheetの保有株の現在価格を更新したりしています。チームでは、アプリのリリースプロセスをGoogleカレンダーと連携させ、カレンダーのイベントをチェックして対応するCI/CDプロセス(GitHub Actionsの呼び出し)をトリガーし、その後チームのSlackチャンネルにメッセージを送信したり、アプリ審査失敗のメールをSlackに転送したりしています。
以上は人間の視点からこの数年間の Google Apps Script 開発の感想を振り返ったもので、次に最近 AI Agent を使ってゼロから直接 GAS を開発してもらった実践感想と具体的な事例 — 個人デスクトップ Dashboard Deck を紹介します。
AIエージェントにGoogle Apps Scriptの連携と開発を直接任せる方法
最近、0からAIを使って直接Google Apps Scriptを開発することを試み始めました。上記の基礎知識と組み合わせて(知識がなくてもAIの理解度は非常に高いです);完成度と正確性はほぼ100%で、「ゼロからAIがプログラムを書く」時代は終わったと言えます。
実践 — AIで無駄を宝に — Claude Design & Claude Codeを使ってあなたの個人デスクトップダッシュボードを作る
問題
ずっと使わなくなった iPhone 8 Plus(iOS 16.7)を引き出しにしまったままでしたが、これをデスクトップの小さな画面として、見たいリアルタイム情報を表示するダッシュボードに使おうと思いました。
基礎インフラ
AI Agent によって Google Apps Script を開発してもらうためには、いくつかの基本的なインフラを整える必要があります。
AIに開発を任せない場合でも、中〜大規模のスクリプト開発時には必ず使用することを強くおすすめします。Webエディタは時々クラッシュしたり、誤って複数のタブを開いて古いコードが新しいコードを上書きしてしまうことがありますが、Claspを使うとより便利で安全にソースコードの管理・編集ができます。
その他の使用例: Google Apps Script プロジェクトを同時に Git リポジトリにアップロードしてバージョン管理(
.clasprc.jsonと.clasp.jsonは除外)、CI で Jest JS の単体テストを自動実行、CD で Clasp トークンを使って最新コードを取得、.claspignore で Google Apps Script プロジェクトにアップロードしないファイルを除外可能。
- clasp Google Apps Script CLI をインストールする(公式 ローカル開発キット)
-
Node.js >= 20.0.0 ( もし nodejs 環境がインストールされていない場合は、先にインストールしてください )
-
npm i @google/clasp -g
-
clasp loginを実行してログインし、認証トークンを生成します(Google Apps Script に対応するアカウントを選択) -
clasprc(Clasp トークン)をキーチェーンに保存して、AI Agent が安全に呼び出せるようにする
security add-generic-password \
-U \
-s "com.google.clasp" \
-a "$USER" \
-w "$(cat ~/.clasprc.json)"
※ コマンドのコメントはありませんので、コードはそのままです。
もし Clasp トークンをコピーして CI/CD のシークレットに設定し、タスクを実行したい場合は、cat ~/.clasprc.json \\| base64 \\| pbcopy(base64 エンコードを忘れずに)を使います。使用時は、echo "$CLASPRC" \\| base64 --decode > ~/.clasprc.json && chmod 600 ~/.clasprc.json とします。
- プロジェクトディレクトリの作成
![]()
プロジェクトディレクトリを作成してから移動する必要があります
- 目次内に Google Apps Script プロジェクトを作成する(clasp を使用)
clasp create
ディレクトリ名をそのままプロジェクト名として使用します。

現在のプロジェクトは空で、appsscript.json の設定ファイルだけがあります。
私のデザイン
もしトークンを節約したい場合は、私の GAS Web App を直接 git clone して、私のデザインや既に開発済みの GAS コードを再利用できます。
Claude Design または Design Agent Skill を使ってダッシュボードを設計する
方法 1 — Claude Design
前回の記事「Jekyll Blog カスタムテーマ設計|Claude Design + Claude Codeで専用スタイルを素早く作成」で紹介したように、同じ手順で満足のいくデザインに調整し、Projectをエクスポートして解凍後、プロジェクトの ./Design ディレクトリに配置します。
方式 2 — Design Agent Skill
サードパーティの設計 Skillを使ってデザインを完成させました。私のプロンプトは大まかに以下の通りです:
/huashu-design
iPhone 8 Plus の横向き表示に対応したウェブダッシュボードを設計し、デザイン結果を ./Design フォルダに保存してください
- 後で Google Apps Script Web App にデプロイ予定
- 上部には日付と曜日、ページ切り替え時計を固定表示
- 下部のタブは定期的に切り替わり、進行状況バーを表示
- 下部タブの内容:
-- 天気情報
-- カレンダー:現在の予定または当日の直近の予定、残りのイベント数を表示
-- カウントダウン/カウントアップ日数
私はモデルを使用しています: Opus 4.7 (1Mコンテキスト) / 努力: 中程度
⏺ まず状況を把握しました:iPhone 8 Plus 横向き = 736×414 CSS px、コンテンツのデータ構造(天気 / カレンダー / カウントダウン)は CLAUDE.md に明確に定義済みです。
スタイルはまだ指定されていませんので、「デザイン方向アドバイザー」として3つの明確に異なるスタイルの方向性を提示します。どれか1つ(または混合例:"Aのフォント + Cの配色")を選んでください。そこから完全なハイファイデザインを作成します。
---
🅐 方向1 · Massimo Vignelli 式スイスグリッド(情報建築派)
▎ Vignelliがニューヨーク地下鉄のために設計したグリッド美学——Helvetica + 厳格なカラム + 赤黒白の三色。情報自体が装飾で、イラスト・アイコン・グラデーションに頼らない。
- フォント:Neue Haas Grotesk / Inter Tight(ディスプレイ用)+ IBM Plex Mono(時計・数字用)
- 配色:純白背景 #FAFAFA · 純黒インク #0A0A0A · 単一朱赤アクセント #E63946(進捗バーと現在のタブに使用)
- レイアウト:12カラムベースライングリッドで全要素揃える;ページ切り替え時計は黒背景白文字の大きな文字+細い水平分割線;タブは角なしの色付きブロック
- 雰囲気キーワード:理性的 / 控えめ / 印刷物 / 情報密度 / 永遠
- 適用例:時代遅れにならず、高品質な新聞の一面のようなダッシュボードを望む場合
---
🅑 方向2 · Dieter Rams × Braun 工業計器(ミニマル工業派)
▎ RamsがBraunのET66電卓やオーディオシステムにデザインした美学——薄い米灰色背景 + 角丸ハードウェアパネル + 単一オレンジアクセント +
▎ 物理ボタンの質感。各ブロックは独立した計器パネルのよう。
- フォント:Söhne / Inter(ラベル用)+ JetBrains Mono(時計はLCD7セグ風)
- 配色:暖かい米灰色 #E5E1DA · 濃い炭色 #2B2B2B · Braunオレンジ #E85D2Cアクセント · ページ切り替え時計はLCD黄緑 #A8B547のヴィンテージ液晶風
- レイアウト:各カードに薄い内側影と1pxのヘアライン枠線を付け、実物計器の凹み感を演出;タブ切り替えはボタン押下の沈み込み風
- 雰囲気キーワード:工業デザイン / 触感 / 1970年代Braun / 落ち着き / エンジニア美学
- 適用例:ハードウェア感が好きで、長時間見ても疲れにくいデザインを求める場合
---
🅒 方向3 · Teenage Engineering OP-1 / ターミナル(スポーツ詩学派)
▎ TEのOP-1シンセサイザーパネルと古いOLEDターミナル美学——濃い炭灰色背景 + OLED青緑のグロー + モノスペースフォント + 細かいグリッド背景。ページ切り替え時計は大型OLED風。
▎ ページめくり、進捗バーはシーケンサーのステップライトのよう。
- フォント:JetBrains Mono / IBM Plex Mono(全体)+ Berkeley Mono(大文字ディスプレイ用)
- 配色:背景 #0E0F0D · 主要テキスト #E8E5DA 米白 · OLED青 #9DEF8Fアクセント · 警告オレンジ #FFB454
- レイアウト:背景に薄い8pxドットグリッド;ページ切り替え時計の大文字は幅の1/3を占め、弱いスキャンライン付き;タブの進捗バーはLEDステップ風;天気はASCII風アイコン
- 雰囲気キーワード:OLED / サイバーデッキ / アナログシンセ / ハッカーチック / ハッカー文化
- 適用例:机の上で「ウェブページ」ではなく「デバイス」のように見せたい場合
---
どれを選ぶか(またはどの要素を混ぜるか)教えてください。続けて完全なハイファイを ./Design/ に作成します。 「どれも違う、他の案を出してほしい」でもOKです。別のスタイルで再提案します。
好きなスタイルを選んだり、AIに自分の希望するスタイルを伝えたりできます。例えば「紙の質感風、クリーム色の和紙+朱印の美学」など。
AIの設計完了を待っています… AIは完了後にPlaywrightでスクリーンショットを撮って検証することがあります。トークンを節約したい場合や自分で結果を確認したい場合は、プロンプトにその旨を伝えてください。
目次から直接 .html ファイルをクリックしてデザイン結果を確認:

満足するまで調整してから次の開発に進みます。
カウントダウン用データソース Google Sheet を作成:

最後にカウントダウン用のデータソースとなる Google Sheet を作成し、今後データを追加する際はこのシートに追加するだけで済むようにします。
title,date,repeat
誕生日,1994-07-18,yes
日本旅行,2026-12-12,
repeat=yes: 毎年繰り返すイベント
Sheet Idをメモする:上の画像のURLの赤い部分 / Gid: 0(最初のシート)。
交通部中央気象局 API キーの登録:
-
認証コードの取得
Claude Code を使ったダッシュボード開発の実装
まずは Claude Code メモリを初期化 Markdown:
/init
実行プランの開発作業計画:
/plan
./Design のダッシュボードウェブ機能とデザインを実装し、Google Apps Script Web App にデプロイします。
- 天気情報は交通部中央気象署の API https://opendata.cwa.gov.tw/api/v1/rest/datastore/F-C0032-00 を使用
- 台北市の天気を表示し、ある項目はすべて表示する
- 開発段階では自分でトークンを生成し、Web App をデプロイして必要なメソッドを自主的に呼び出しテスト検証を行うこと。開発完了後は必ずこの入口を削除する
- Web App は全員がアクセス可能にデプロイするが、カスタムトークンで保護。初回利用者はトークンを入力するかURLから渡す
- カレンダーはデフォルトで primary を読み取る
- カウントダウン日は提供した Google Sheet から読み取り、title, date, repeat。repeat が yes の場合は年単位の繰り返しカウントダウンで、経過した x 年 y 月も表示(切り捨て)
- API キー、Google Sheet ID/GID などはすべて PropertiesService に設定
- clasp push & deploy を直接実行。clasprc login トークンは keychain security add-generic-password \ -U \ -s "com.google.clasp" \ -a "$USER" で管理
- 手動で対応が必要な箇所はすべて繁体字中国語で手順を教えてください
- oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/script.scriptapp" ]
- google.script.run の呼び出しフォーマットが正しいか特に確認する
- 実際の GAS Web App の HTML は iframe ラッパー内でレンダリングされる
- ./Design など Google Apps Script にアップロードしないファイルは .claspignore に追加する
-
Web App には4つのアクセス権限があります:全員、本人のみ、ログインユーザーのみ、ログイン済みかつ組織内のアカウントのみ
-
上記の例の設計はシンプルで、誰でもアクセス可能ですが、正しいランダムなトークンを入力しないとデータを閲覧できません。天気は自分の地域に変更でき、複数の地域にも対応可能です。
-
カレンダーはデフォルトでメインカレンダーのみを処理します。他のカレンダーがある場合は、カレンダーの設定と共有 -> カレンダーの統合 -> カレンダーIDから取得できます。
-
ここで手間を省くために、AIに直接テスト用Webアプリの入口をデプロイさせ、開発しながらテストと修正を進めてもらい、完成したら私に知らせてもらう
Planが完了して問題がなければAIに質問し、なければ実作業を開始できます!
コーヒーを淹れながらAI開発を待つ…

AIエージェントの質問:
あなたに必要な操作(一度だけ):
1. エディタを開く: https://script.google.com/d/1KEWgIql-gqTNI_Tv_w2-5t7VE_R0eBtjAtd3iqLqabYLOnzJZ8Ga8N4s/edit
2. 右上の「部署 / Deploy」→「管理部署作業 / Manage deployments」
3. 既存の両方のデプロイ(@HEAD と dev v1 — 鉛筆アイコンの編集ではアクセス権を変更できません)を削除する
4. 次に「新增部署 / New deployment」→ 種類: ウェブアプリケーション → 実行ユーザー: 自分(あなたのアカウント)→ 誰がアクセス可能: 誰でも / Anyone → デプロイ
5. 同意画面で OAuth を許可する(calendar.readonly、spreadsheets.readonly、external_request)
6. 新しいウェブアプリの URL(例: https://script.google.com/macros/s/AKfycb.../exec)をコピーしてここに貼り付ける
また以下も貼り付けてください:
- CWA API キー(交通部中央気象署 Open Data 認証キー)
- 倒数日 Sheet ID(Sheet URL の /d/ と /edit の間の長い部分)
- Sheet GID(URL の gid= の後の数字 — 最初のタブはデフォルトで 0)
URL と秘密情報を受け取ったら、dev エンドポイント経由で Properties をセットし、アクセストークンを発行し、各ハンドラを検証して接続します。
(1. ) 初回実行時は私たちの認証が必要で、その後 AI Agent が自動で実行できるようになります。Script Editor のURLへアクセスしてください:

適当な関数を含むファイルを選択し、デバッグしたい関数を選択してください:

- 初回実行時または権限が追加された場合のみ、認証が必要です。
もし AI がずっと権限の問題を言うのに、実際の実行で認証画面が出ない場合は、まずプロジェクト設定で「エディタに『appsscript.json』マニフェストファイルを表示する」をチェックし、エディタに戻って
appsscript.jsonの oauthScopes の内容を少し変更して一度実行し、また元に戻して実行すると認証フローが表示されるはずです。
1 だけ自分で処理し、他はAIに任せる:
1. OK、直接デプロイしてください
CWA API Key: CWA-XXXX-XXXX-XXXX-XXXX-XXXX
カウントダウン日 Sheet ID: XXXX / GID: 0

AIによるGoogle Apps Scriptの設定支援
⏺ スコープは更新されてプッシュされましたが、デプロイヤーの OAuth 権限は新しいスコープに対して再認証が必要です。ウェブアプリはあなたのアカウントで実行されます — 新たに追加されたスコープは再度許可する必要があります。
これを一度行ってください:
1. エディタを開く:https://script.google.com/d/1KEWgIql-gqTNI_Tv_w2-5t7VE_R0eBtjAtd3iqLqabYLOnzJZ8Ga8N4s/edit
2. 上部の関数ドロップダウンから setupConfig(または任意の関数)を選択
3. 「実行 / Run」をクリック — Google が「承認が必要です / Authorization required」ダイアログを表示します
4. 許可 → アップグレードされた auth/spreadsheets スコープを付与します
5. 完了したら教えてください。カウントダウンハンドラの再テストを行います
私たちはAIに指示を出していますが、それでも時々手動で助けが必要な場合があります。例えば上記のメッセージのように。私たちは単に彼の手順に従って関数を一度実行し、「OK」と伝えるだけです。ちょっとした手助けをする感じです。(もし彼が言った方法が表示されなければ、ページをリロードしてください)

AI 開発完了、検収!

問題が見つかった場合は、再度 AI に修正を依頼してください。
AIを使ってあなた専用のパーソナルデスクトップダッシュボードを作成 — 成果
デスクトップ版

iPhone モバイル版

GAS Web AppではフルスクリーンPWAでアドレスバーを隠すことはできません。100%の体験を望む場合は、進階内容を参照してください。
最終コード
今後のタスク
-
[required] AIに伝える:開発完了後、すべての開発段階のインターフェース/エンドポイントを削除してください
-
[optional] Google Apps Script プロジェクト -> プロジェクト設定 -> スクリプトプロパティ ->
ACCESS_TOKEN-> 新しいランダム文字列を生成し、URLの?token=もこの文字列に変更する
macOS では以下のコマンドでランダム文字列を生成できます:openssl rand -hex 32 -
[optional] 交通部中央気象局APIキーの再発行 を行い、Google Apps Script プロジェクト -> プロジェクト設定 -> スクリプトプロパティ ->
CWA_API_KEYに入力してください。
⚠️Claude Codeの警告によると: 対話中に入力されたすべてのトークンは漏洩の可能性があるため、漏洩済みとみなす必要があります。ただし、開発検証を容易にするために一時的に直接入力しています。検証完了後は必ず再生成して差し替えてください。
もしGASに詳しければ、最初に自分でスクリプトプロパティを設定してから、AIにそれを直接使うよう指示することもできます。
拡張
もしこの記事があなたの創造力を刺激したなら、例えばYahoo Financeを連携して注目している株のリアルタイム株価を表示したり、AnalyticsDataやAdSenseを連携してサイトのトラフィックや広告状況を取得するといったことも考えてみてください。
上級
GASのWebアプリでは本当のRWDやフルスクリーンPWA(アドレスバー非表示)が実現できないため、私はGASのWebアプリをAPIサービスとしてJSONデータのみ返すようにし、フロントエンドは別途GitHub Pagesで実装して正式なウェブページとしてデプロイしています。これにより、完全な使用体験を得られます。


iOS フルスクリーン PWA 設定 -> SafariでURLを開く -> 共有 -> ホーム画面に追加
この方法は少し複雑なので、/plan フェーズで AI にこう伝えましょう:
- GAS Web App はバックエンドサービスのみを担当し、JSON をフロントエンドに出力する
- フロントエンドは GitHub Pages を使ってデザイン表示とデプロイを行い、すべてのプログラム開発とデプロイ作業を担当する
- フロントエンドとバックエンド間はカスタムのランダム文字列トークンで保護する
まとめ
以上が今回の AI Agent を使った Google Apps Script 開発体験の紹介です。最近は AI を使って以前開発した中〜大型の GAS プロジェクトをリファクタリングしており、効果は良好です。ローカル環境で関数の単体テスト(Jest や Google APIs のモックを使用)を追加して安定性を向上させることも可能です(CI/CD 環境で実行し、clasp pull と GAS プロジェクトのバックアップと連携)。AI の GAS に対する理解度と出力の正確性はほぼ 100% に近いです。
もし2021年なら…
もしAIがなかった時代なら、デザイン、コーディング、プログラムロジックの開発から公開まで、0から手作業で約30時間かかっていたと予想します。今ではAIを使えば3時間以内で完了できます。
基本的に今後はもう最初からGASを開発することも、ゼロからAIにプログラムを書かせることもせず、ゼロからAIに完成した製品を作ってもらうだけです(プログラム?気にしません)。
ケース(2) — 個人株式リスト管理

最近試した別の AI による Google Apps Script 自動化の事例です。私の Google Sheet の保有株式表を可視化する Web アプリに変換し、Yahoo Finance から最新の株価を取得して表で表示します。下部には売買記録を素早く入力できる欄があり、それを Google Sheet に書き戻す連携も行います。
関連記事
TL;DR これらは以前手作業で作成した GAS サービスやツールです
-
Google Apps Script Web App を使って GitHub Actions と連携し、無料で使いやすいパッケージングツールプラットフォームを構築する
-
Crashlytics + Google Analytics 自動で App Crash-Free Users Rate を照会
-
Google Apps Script を使って3ステップで無料で GitHub Repo Star Notifier を作成する
Post MediumからZMediumToMarkdown によって変換されました。



コメント