回答: AIエージェントがApps Script(GAS)のコードを書き、そのままクラウド側へ反映するところまで通せる仕組みが、GoogleのGitHubリポジトリで公開されているCLI「clasp」に実験的機能として入っています(claspはGoogleの公式サポート対象製品ではないとREADMEに明記されています)。ここで決めておく必要があるのは、AIの精度ではなく反映の範囲と、元に戻せるかです。理由は、`clasp push` が差分の追加ではなく、送ったファイルでオンライン側のプロジェクトの中身を丸ごと置き換える仕様だからです。ローカルに無いファイル、除外設定で送られないファイルは、置き換えによって消えます。
当てはまるのは、反響メールの転送・振り分け・通知のような、業務で動いているApps Scriptを持っていて、その修正にAIエージェントを使っている(または使い始めようとしている)会社です。AIに書かせたコードを人が画面にコピーして貼っている場合、この記事の①は当てはまりません(②③は当てはまります)。Apps Scriptを使っていない会社には関係ありません。
内製そのものを止める話ではありません。 用途が合えば自作で十分なケースはあります。決めるのは「AIに本番を触らせる線をどこに引くか」だけです。
この記事でわかること
- AIエージェントがGASのコードを反映できる仕組みは、いまどういう位置づけか(公式の記述で確認できる範囲)
- 事故が起きるときの3つの形(消える/静かに間違う/気づかない)
- 不動産の反響対応に置き換えると、どこに出るか
- 本番に触らせる前に決める3点
- この話が当てはまらないケース
AIがGASを書いて反映するところまで、仕組みとしては通る
答え: GoogleのGitHubリポジトリで公開されているApps Script用のCLI「clasp」に、コーディングエージェントから使うためのMCPモードがあります。なお、READMEにはclaspがGoogleの公式サポート対象製品ではない旨が明記されています。ただし公式リポジトリのREADMEで「EXPERIMENTAL(実験的)」と明記されている機能で、エージェントに提供されるツールも限定的だとされています。
READMEのMCPの節には、次のように書かれています。
> Runs clasp in MCP (model context protocol) mode for use with coding agents. > (コーディングエージェントで使うために、claspをMCPモードで実行する)
そのうえで「この機能は実験的で、現時点ではエージェント向けのツールの限られた一部を提供する」とされています。公式のリリースノートをさかのぼると、この`mcp`コマンドは v3.0.5-alpha の「Experimental mcp command to run clasp as an MCP server for use with coding agents」として現れています。正式版の機能として案内されているものではありません。
押さえておきたいのは、この機能が実験的かどうかとは別に、`clasp push` そのものの仕様が「置き換え」であることです。READMEのpushの節には、次のように書かれています。
> the `push` command always replaces the whole content of the online project with the files being pushed. > (pushコマンドは、送るファイルでオンラインのプロジェクトの中身を常に置き換える)
つまり、ローカルにあるファイルを足すのではありません。送った内容が、そのプロジェクトの中身になります。
さらに`.claspignore`は、`.gitignore`と同じようにpushの対象から外すファイルを指定する設定です。除外されたファイルは送られないので、オンライン側にしか無いファイルは置き換えで消えます。`.claspignore`を書かない場合は既定のパターンが適用され、`rootDir`の中の`appsscript.json`とJavaScript・TypeScript・`.html`ファイルだけが対象になります。
実際に「消えかけた」記録が公開されている
個人の検証記事として、`.claspignore`で全体を除外して一部だけ戻す書き方をしていたために、オンライン側にあった`Webhook.js`がpushの対象から外れ、実行すれば消える状態だったという報告が公開されています。このときはclaspが「Script is already up to date」と判定して送信しなかったため、削除は起きませんでした。筆者自身が、防げたのは偶然だったと書いています。
この記事は個人の検証であり、7plusが再現を確認したものではありません。ただし、pushが置き換えであることと、`.claspignore`が送信対象を絞ることは、どちらも公式READMEに書かれた仕様です。「ローカルとクラウドが一致している」という前提が崩れていると何が起きるか、という形としては参考になります。
事故は3つの形で起きる
答え: AIに本番を触らせたときに起きることは、「エラーで止まる」だけではありません。消える・静かに間違う・気づかないの3つに分けて考えると、どこに手を打つかが決まります。
| 形 | 何が起きるか | エラーになるか |
|---|---|---|
| ①消える | pushの置き換えで、オンライン側にしか無かったファイルが無くなる | ならない(pushは成功する) |
| ②静かに間違う | 単位・桁・項目の取り違えで、間違った値のまま処理が完了する | ならない |
| ③気づかない | 処理が成功で終わっているのに、結果が届いていない | ならない |
①は前の節のとおりです。②と③は、AIが書いたかどうかとは関係なく起きます。ただし、AIに任せる量に対してレビューや自動の検証が追いついていない場合、誤りの発見が遅れる可能性があります。
②の形は、責任の所在を考えるための想定例として公開されています。Linux Foundation傘下のAgentic AI Foundation(AAIF)が2026年9月10〜11日に開催した「AGNTCon + MCPCon Japan 2026」で、同団体の開発者体験担当VPであるアンジー・ジョーンズ氏が、顧客サポートのAIエージェントが48ドルのはずの返金を4800ドル返金してしまったという想定を置き、聴講者と考察したものです。想定の中では、注文データには「4800セント」と正しく記録されていたのに、モデルがツールを呼び出すときに「セント」という単位が落ち、4800という数字だけが渡されてドルとして処理された、という筋立てになっています。実際に起きた事故として報告されたものではありません。
この想定で問われているのは、原因の調べ方ではなく誰が結果を引き受けるかです。ジョーンズ氏は「犯人は誰か」としてチーム/ランタイム(AIエージェントの実行環境)/モデル/ツールとデータの4択で会場に挙手を求め、投票はチームが最多だったとされています。同氏の言葉として、次が紹介されています。
> やったのはモデルだ。しかし皆さんが選んだ通り、結果を引き受けるのはチームだ
そのうえで、モデルが間違える可能性を前提に誤りを本番に届かせない仕組みを用意することがチームの責任であり、後から実行の記録を検証できる・AIエージェントの行動を制約できる・必要に応じて仕組みを変更できる状態を保つことを「ループを掌握する(own the loop)」と呼んでいます。人がループの中に入る(Human in the loop)、外から監督する(Human on the loop)の先にある表現だと説明されています。
同じイベントでは、AAIFエグゼクティブディレクターのマジン・ギルバート氏が、モデルよりもその外側の実行基盤(ハーネス)のほうが重要だとして「同じモデルでも、ハーネスが違えば同じタスクの結果が全く別物になる」と述べています。
③については、自動化が「成功」のまま止まるときで、エラーにならない3パターンを扱っています。
不動産の反響対応に置き換えると、どこに出るか
答え: 反響の取込・振り分け・通知をApps Scriptでまわしている場合、①は「転送が止まる」、②は「間違った内容のまま担当者に届く」として出ます。②のほうが見つけにくいです。
| 形 | 反響対応での現れ方 |
|---|---|
| ①消える | 媒体ごとの振り分けや、特定の宛先への通知を書いたファイルが無くなる。残った処理との依存関係によって、実行時エラーで止まる場合も、「ある媒体の反響だけ来ない」形になる場合もある |
| ②静かに間違う | 価格の単位(万円と円)、面積、手数料の桁がずれる。通知は届くので、受け取った担当者が気づくまで誰も止めない |
| ③気づかない | 送信の処理が正常に終わっているのに、宛先側の振り分けなどで担当者が通知を見ていない |
②について、不動産の業務で単位の取り違えを確認しておきたい項目の例を挙げると、価格(万円表記と円表記)、面積(平方メートルと坪)、手数料や料率(パーセントと小数)です。発生の頻度を調べた資料があるわけではありませんが、いずれも数字としては妥当な範囲に収まるため、値そのものを見ても異常だと分からないことがあります。
反響がどの経路で社内に入ってきているかを書き出していない場合は、先に反響メールの転送先を棚卸しする方法で経路を整理しておくと、どのファイルが消えると何が止まるかが分かります。
本番に触らせる前に決める3点
答え: 決めるのは次の3つです。AIの使い方の是非ではなく、どこまで反映させるかの線引きです。
① 本番のプロジェクトを直接触らせるか、触らせないか
いちばん効く線引きです。選び方は2つあります。
- 触らせない:AIには別のプロジェクト(コピー)を触らせ、本番へはpushさせない。本番への反映は人が行う。この場合、AIに渡す認証情報を本番のプロジェクトにアクセスできないものにしておく必要があります。権限を絞らずに「触らないことにしている」だけでは、線にはなりません
- 触らせる:対象プロジェクトを明示的に限定し、pushの前に人が承認する。MCPには、ツールが破壊的な操作であることをクライアント側に伝えるヒント(`destructiveHint`)があります。ただしこれはヒントであって、承認を必須にする仕様ではありません。 実行前に人の確認が入るかどうかは、使うクライアントの実装と設定によるので、自社で使うクライアントで実際に確認が出るかを試してから決めてください。 また、エージェントにシェルを実行する権限があれば、`clasp push`を直接呼ぶ経路が残ります
最初は「触らせない」から始め、復旧の手順が決まってから広げるほうが戻しやすいです。
② 反映する前に、クラウド側と突き合わせるか
pushが置き換えである以上、送る前にオンライン側のファイルと送信対象を突き合わせ、送信対象に入っていないファイルがあればpushを中止して補うという手順にできれば、①の「意図しない削除」への対策になります。見るだけで止めない運用にすると、差分に気づいても実行すれば消えます。
Apps Script APIの`projects.getContent`は、スクリプトプロジェクトのコードとファイルごとのメタデータを取得します。公式リファレンスの説明は次のとおりです。
> Gets the content of the script project, including the code source and metadata for each script file. > (コードのソースと、各スクリプトファイルのメタデータを含む、スクリプトプロジェクトの中身を取得する)
これを使って「オンライン側にあって、これから送る対象に入っていないファイル」を一覧できれば、消えるファイルを事前に出せます。自分たちで仕組みを作らない場合は、反映の前に人がエディタのファイル一覧と送信するファイルの一覧を見比べ、足りないものがあればそこで止める——という手順まで決めておきたいところです。一覧を眺めるだけでは止まりません。
③ 戻せるようにしてあるか
①②をすり抜けたときの最後の手段です。Apps Scriptには版(version)を作る仕組みがあり、Apps Script APIの`projects.versions.create`は「現在のコードを使って、一意の版番号を持つ不変の版を作る」ものです。
過去の版が残っていれば、置き換えで消えたファイルの内容を確認できます。逆に版を一度も作っていないプロジェクトは、置き換えの前の状態をたどる手がかりが乏しくなります。 AIに触らせる前に版を作っておく、というだけでも差が出ます。
あわせて決めておくのは、誰のアカウントで動いているかです。Apps Scriptのインストール型トリガーは「常に作成した人のアカウントで実行される」とされ、別のアカウントから設置されたトリガーは、そのアカウントからは見えません(インストール型トリガー・公式ドキュメント)。AIが作ったトリガーが誰の権限で何をしているかをたどれる状態にしておかないと、前の節の「後から実行の記録を検証できる」が成り立ちません。
この話が当てはまらないケース
- Apps Scriptを業務で使っていない:関係ありません
- AIに書かせたコードを、人が画面にコピーして貼っている:①(pushの置き換え)は起きません。②③は残ります
- 自動処理が1本だけで、毎日人が結果を見ている:②③に気づくまでの時間が短いので、仕組みでの監視より運用のほうが現実的な場合があります
- 検証用のプロジェクトしかない:消えても業務が止まらないなら、先に試す側に寄せて構いません
逆に、本番で動いている自動処理が複数あり、作った人と確認する人が同じ場合は、AIに任せる量が増えるほど確認が後ろに溜まります。この構造はAIで作るのは速い、では誰が確認するのかで扱っています。
よくある質問
clasp の MCP モードは使ってはいけないものですか
そうは言えません。公式リポジトリで実験的機能と明記されており、提供されるツールも限定的とされているため、本番のプロジェクトを対象にする前に、消えても困らないプロジェクトで挙動を確かめるのが妥当な順番です。実験的機能は仕様が変わる可能性があるため、確認は使う時点の公式リポジトリで行ってください。
clasp push で消えたファイルは復元できますか
過去の版(version)が残っていれば内容を確認できます。版を作っていない場合は、ローカルや他の場所にコピーが無いか探すことになります。置き換えの前に版を作る、という手順を先に決めておくのが現実的な対策です。
AIの精度が上がれば、この確認は要らなくなりますか
①と③は精度の話ではありません。①はpushが置き換えだという仕様、③は処理が成功で終わる仕組みの話です。②(単位や桁の取り違え)は精度が上がれば減る可能性がありますが、48ドルが4800ドルになる前掲の想定例のように、値として妥当な範囲に収まるとチェックで弾かれにくいという性質は残ります。
業務システムのデータをAIから参照させる話とは、何が違いますか
対象が違います。業務システムにAIをつなぐ話は「AIに渡すデータと、させない操作」を決めるものです。この記事は「AIが業務の処理そのものを書き換えられる状態」の線引きを扱っています。前者は業務システムをAIにつなぐ前に決めることにまとめています。
まとめ
AIがGASを書き、反映まで通せる仕組みは、実験的機能として実在します。ただし決めるべきことは、AIがどれだけ賢いかではありません。
- 本番のプロジェクトを直接触らせるか——触らせないなら、権限で切る
- 反映の前にクラウド側と突き合わせるか——`projects.getContent`で確認するか、人がファイル一覧を見る
- 戻せるか——版を作っておく。誰のアカウントで動いているかをたどれるようにする
Apps Scriptで反響対応をまわしている会社は、AIに修正を任せ始める前に、この3つを決めてから広げてください。内製をやめる判断とは別の話です。
反響メール転送の運用負担を見直したい場合
Mail2Linkは、反響メールをチャットへ届ける運用をサービスとして提供するものです。自作との違いは、作る速さではなく、失敗の検知・媒体仕様の変更への追従・権限の分離・問い合わせ窓口を誰が持つかにあります。対応している連携先や転送の条件が自社の業務に合うかを確認し、内製を続ける場合に自社で用意する保守体制と並べて比べてください。用途が合えば自作で足りるケースもあります。
—
この記事を書いた会社
7plus株式会社 不動産会社向けの営業DX支援を行うITソリューションプロバイダーです。反響対応を即時化する「Mail2Link」「Mail2Link×AI」、ノーコード業務アプリ「BizBlock」の開発・提供に加え、Salesforce認定パートナーとして不動産特化型Salesforceパッケージの導入・定着コンサルティングも行っています。
詳しくはこちら → https://7plus.jp/

