
※当サイトにはアフィリエイト広告が含まれます。本記事の本文にアフィリエイトリンクはありませんが、筆者自身の在庫管理キットの案内を2か所含みます。記事の前後には、サイト共通の広告が表示されます。
GAS(Google Apps Script)のコードを直したのに、Webアプリの画面が何も変わらない。GASデプロイが反映されない場面は、慣れた人でも踏みます。Qiitaにも、同じ悩みを書いた投稿がありました。
GoogleAppsScriptでプログラムを書いて一度公開したあと、 プログラムを修正をしたときに、修正内容が反映されなくてちょっと困ったのでメモ。
多くの解説は、新しいバージョンを出す手順で終わります。私が取引先の業務アプリで踏んだのは、その手順を済ませても直らない3つ目の原因でした。上から順に見れば、どこで止まっているかは必ず絞れます。
GASデプロイが反映されないときに最初に見る3か所は?
最初に見るのは、エディタの中身、デプロイのバージョン、コードが開くスプレッドシートのIDの3か所です。この順番で見ると、手戻りがいちばん少なくなります。上の層が崩れていると、下の層を直しても画面は変わりません。
3つの層は上から順に確かめる

1層目は、直したコードがGASのエディタに入り、保存されているかです。2層目は、公開中のデプロイが新しいバージョンを指しているかになります。3層目は、コードが読み書きするスプレッドシートが、利用者の使っているファイルと同じかです。
反映されないときに見る順番
- エディタに直したコードが入っていて、保存済みか
- 公開中のデプロイが、新しいバージョンを指しているか
- コードが開くスプレッドシートのIDが、使われているファイルと同じか
/devで開くと、どの層で止まっているか分かる
切り分けの近道は、テスト用のURLで開くことです。URLの末尾が/devのものは、保存済みの最新コードで動きます。/devで直っていて/execで直らないなら2層目です。/devでも直らないなら、1層目か3層目に絞れます。
私の現場でも起きた 取引先の業務アプリを手貼りで保守している
私は取引先の業務アプリを、Claude Codeで保守しています。GASのWebアプリで、ファイルはコード.gsとIndex.html、通知用の.gsの3つです。この記事の実例は、すべてこのアプリと社内のスプレッドシートで起きたことです。
claspを使わず、エディタへ手で貼っている
コードはローカルでClaude Codeに直させ、GASのエディタへ手で貼っています。claspという同期ツールは使っていません。直すたびに全ファイルを貼り直し、新しいバージョンでデプロイしています。
通知用の.gsは、登録があったときに知らせる役目のファイルです。GASからの通知の組み方は、GASでLINEに通知を送る方法にまとめています。
手で貼る運用だと、3つの層すべてで止まり得る
手貼りの運用では、貼り忘れと出し忘れが両方起きます。私のアプリで一番手こずったのは、そのどちらでもありませんでした。3層目のIDの食い違いです。
AIで業務を自動化した事例は、AI自動化の実例集にも並べています。ここではGASの反映に絞ります。
1層目 直したコードはエディタに入っているか
1層目は、直したコードがGASのエディタに入っていない状態です。ローカルのファイルをいくら直しても、エディタに貼るまでGASは何も知りません。/devで開いて変化が無ければ、まずここを疑ってください。
保存していない変更は/devにも出ない
Googleの公式ドキュメントは、テスト用のデプロイについてこう書いています。
The head deployment always syncs with the most recently saved code.
テスト用のURLは、保存された最新のコードに同期するという意味です。貼っただけで保存していない変更は、/devにも出ません。エディタのファイル名の横に未保存の印が残っていないか、見てください。
ファイルが複数あるなら、全部貼り直す
私のアプリは3ファイルあります。1つだけ貼って残り2つが古いと、画面とサーバー側の処理が食い違います。直したファイルが1つでも、私は3つとも貼り直しています。
貼る前には、ローカルで構文だけ確かめます。node –checkは.gsの拡張子を受け付けなかったので、.jsにコピーしてから通しました。構文が通っても動くとは限らない点は、後の節で書きます。
AIの完了報告は、エディタの中身と照らし合わせる
Claude Codeが直しましたと返しても、それはローカルのファイルの話です。エディタに入れるのは人の手になります。AIの完了報告の確かめ方は、Claude Codeで直したはずの変更が消えるときの実録で詳しく扱いました。
2層目 GASの修正は新バージョンを出すまで反映されない
GASの修正は、新しいバージョンを出してデプロイに指させるまで、公開中のURLには反映されません。/devで直っていて/execで直らないなら、この層です。GASの修正が反映されない相談の多くは、ここで解決します。
公式が案内している更新の手順
公式ドキュメントは、URLを変えずに更新する方法をこう説明しています。
When you want to update the code used by an existing deployment (like a web app), you create a new version and then edit the deployment to point to that new version. This updates the application for all users while maintaining the same URL or deployment ID.
新しいバージョンを作り、既存のデプロイをそのバージョンに向け直す。これで同じURLのまま、全利用者のアプリが更新されます。
デプロイを管理から新バージョンを選ぶ5つの操作
URLを変えずに反映する手順
- エディタ右上の「デプロイ」を押す
- メニューから「デプロイを管理」を選ぶ
- 公開中のデプロイを選び、鉛筆のアイコン(編集)を押す
- バージョンの欄で「新バージョン」を選ぶ
- 画面下の「デプロイ」を押して閉じる

終わったら、/execのURLを開き直して確かめます。私は毎回、直した箇所を画面で1つ触ってから作業を終えています。
/devと/execの違い
| 項目 | /dev(テスト用) | /exec(公開用) |
|---|---|---|
| 動くコード | 保存済みの最新コード | デプロイが指すバージョン |
| 開ける人 | スクリプトの編集権限がある人だけ | アクセス設定で許可した人 |
| 修正の反映 | 保存した時点で反映 | 新バージョンを指させた時点で反映 |
| 使いどころ | 公開前の動作確認 | 利用者に配るURL |
/devは編集権限のある人しか開けません。利用者から直っていないと言われたら、確かめるのは/execのほうです。
GASウェブアプリの更新でURLが変わるのはなぜ?
GASウェブアプリの更新でURLが変わるのは、新しいデプロイを作っているからです。デプロイを管理から更新すれば、URLは変わりません。公式ドキュメントには、デプロイごとに固有のURLかIDがあると書かれています。新しいデプロイを作れば、新しいURLが発行されるわけです。
新しいデプロイは、別の住所をもう1つ作る操作

デプロイのメニューには、新しいデプロイとデプロイを管理が並んでいます。前者は、住所の違う公開先をもう1つ増やします。利用者のブックマークや、ほかのシステムに書いたURLは古いままです。
古いデプロイは古いバージョンを指し続けます。利用者は古い画面を使い続け、作った側は直したつもりになる。反映されないと感じる原因の1つです。
URLを配った後は、デプロイを管理だけを使う
URLを誰かに配ったら、以後の更新はデプロイを管理からだけ行ってください。私の運用でも、新しいデプロイは最初の1回しか押していません。増えてしまったデプロイは、デプロイを管理の一覧でアーカイブできます。
3層目 GASでスプレッドシートに反映されないときはIDを疑う
新バージョンを出しても直らないなら、コードが別のスプレッドシートを見ています。GASでスプレッドシートに反映されない症状は、コードの中身よりファイルのIDを先に確かめてください。この層は、手順をいくら正しく踏んでも直りません。
2026年6月15日、取引先がファイルを複製版に切り替えた
2026年6月15日、取引先の側で、業務に使うスプレッドシートを複製版に切り替えました。利用者は複製版で仕事を続けています。コードは、旧ファイルのIDを指したままでした。
症状は、新規登録が反映されない、というものです。アプリの画面からは登録できるのに、利用者が見る複製版には行が増えません。登録の書き込み先は、旧ファイルのほうでした。
旧ファイルが開ける限り、エラーは出ない

3層目が厄介なのは、エラーが出ないことです。openByIdは、渡されたIDのファイルを開けさえすれば、黙って書き込みます。旧ファイルは削除されていないので、エラーは1件も出ません。
次のコードは、構造だけを再現した例です。IDは架空の値に置き換えています。
<code>// コード.gs(再現例)
const SHEET_ID = 'XXXX_OLD_FILE_ID'; // 旧ファイルのIDのまま
function addRecord(row) {
const ss = SpreadsheetApp.openById(SHEET_ID);
ss.getSheets()[0].appendRow(row); // 旧ファイルに書き込み、エラーは出ない
}
// 通知用の.gs(再現例)
const NOTIFY_SHEET_ID = 'XXXX_OLD_FILE_ID'; // こちらにも同じIDが残っていた</code>ID参照は2ファイルに1箇所ずつあった
私のアプリでは、スプレッドシートのIDを書いた箇所が2ファイルに1箇所ずつありました。コード.gsと、通知用の.gsです。片方だけ直すと、登録と通知で別のファイルを見る状態になります。
両方を複製版のIDに揃え、3ファイルを貼り直して、新バージョンでデプロイしました。これで新規登録は複製版に入るようになっています。IDを探すときは、全ファイルをopenByIdとIDの文字列で検索するのが確実です。
IDの管理を最初から1か所に寄せた在庫管理のシートもあります。GASで作った在庫管理キット Lite の中身を見てみてください。
ファイルの複製やバックアップのたびに起きる
スプレッドシートを複製すると、新しいファイルには新しいIDが付きます。コードに書いたIDは、自動では書き換わりません。複製やバックアップからの戻しがあった日は、この層を最初に疑ってください。
別ブックへの転記でも、同じくIDの指定がつまずきどころになります。エクセルで別ブックに転記する方法では、Excel側の同じ問題を扱いました。
GASデプロイが反映されないときの早見表とチェックリスト
GASデプロイが反映されないときは、症状から層を決めて、その層の直し方だけを試します。3層の早見表を置いておきます。
| 層 | 見分け方 | 直し方 |
|---|---|---|
| 1層目 エディタ | /devで開いても変化がない | 全ファイルを貼り直して保存する |
| 2層目 バージョン | /devは直っていて/execは古い | デプロイを管理で新バージョンを指させる |
| 3層目 スプレッドシートID | 画面は新しいのに、シートに行が増えない | 全ファイルのIDを使用中のファイルに揃える |
反映を確かめるチェックリスト
デプロイ前後に確かめる6項目
- 直したファイルだけでなく、全ファイルを貼ったか
- エディタで保存し、未保存の印が消えているか
- /devで開き、直した箇所が変わっているか
- デプロイを管理から、新バージョンを選んだか
- /execで開き、利用者と同じ画面で変化を確かめたか
- コード内のスプレッドシートIDが、利用者の使うファイルと同じか
ゼロから組むのがしんどい人へ
3層を毎回たどるのは、コードを書き慣れていない人には重い作業です。在庫の管理がしたいだけなら、動く形から始める手もあります。
GAS製の在庫管理キット Lite
GASで作ったスプレッドシートの在庫管理キットです。980円の買い切りで、月々の支払いはありません。自分でGASを一から書く前に、動く見本を手元に置きたい人向けに用意しました。
ローカルで通ったコードはどう扱う?
ローカルで通ったコードは、構文が正しいと分かっただけのコードとして扱います。GASで本当に動くかは、エディタに入れて実際のシートで試すまで分かりません。直したコードと動いているコードは別物です。
getActiveSpreadsheetのコードはローカルから実シートを読めない
社内で使う備品在庫のスプレッドシートも、同じく手貼りで運用しています。こちらはgetActiveSpreadsheetで、スプレッドシートに紐づいたスクリプトです。ローカルのClaude Codeからは、実際のシートを読めません。
そのため、ローカルでできる確認は構文チェックまでです。実データで動くかは、GASのエディタの側でしか確かめられません。
検証していない間は構文チェックのみと書く
私はこの運用で、1つ決めごとを作りました。実シートで試していない間は、作業記録に構文チェックのみと明記することです。直りましたとは書きません。
AIに直させる場合も同じです。Claude Codeの報告が直しましたでも、実シートで確かめるまでは構文チェックのみ、と扱っています。GASとAIのAPIをつなぐ組み方は、GASからChatGPTやClaudeのAPIを呼ぶ自動化パターンで紹介しています。
まとめ GASデプロイが反映されないときは3層を上から見る
GASデプロイが反映されないときは、エディタ、バージョン、スプレッドシートIDの3層を上から見てください。/devで直っているかどうかで、どの層かはほぼ絞れます。新バージョンを出しても直らないなら、IDの食い違いを疑うのが近道です。
私が一番時間を使ったのは、手順では直らない3層目でした。旧ファイルが残っている限り、エラーは出ません。複製やバックアップの後は、コードに書いたIDを真っ先に確かめてください。
AIに作らせたアプリ、本当に動いていますか
AIアプリ点検室(月額980円)
私が自分のシステムで見つけた偽の成功を、確かめ方とAIへの頼み方つきで毎月2本お届けしています。「保存しました」と出るのに何も保存していなかった画面や、失敗を「0件」と表示していた画面の実録です。
GASデプロイが反映されないときによくある質問
Q. GASのデプロイが反映されないのはなぜですか?
原因は3つに分かれます。エディタに貼っていないか保存していない、新しいバージョンを出していない、別のスプレッドシートを見ている、のどれかです。
Q. GASのWebアプリをURLを変えずに更新するには?
デプロイを管理から公開中のデプロイを編集し、バージョンで新バージョンを選んでデプロイします。公式ドキュメントも、この方法なら同じURLのまま全利用者に反映されると説明しています。
Q. /devと/execの違いは何ですか?
/devは保存済みの最新コードで動くテスト用で、編集権限のある人しか開けません。/execはデプロイが指すバージョンで動く公開用のURLです。
Q. 新しいデプロイを作るとURLは変わりますか?
変わります。デプロイごとに固有のURLかIDが付くためです。URLを配った後の更新は、デプロイを管理から行ってください。
Q. 新バージョンを出したのにスプレッドシートに反映されないのはなぜですか?
コードが別のスプレッドシートのIDを指している可能性があります。openByIdは旧ファイルが開ける限りエラーを出しません。全ファイルのIDを、使われているファイルのIDに揃えてください。
Q. 保存ボタンを押しても何も起きないのはなぜですか?
画面側のJavaScriptがエラーで止まっている可能性があります。私のアプリでは、onclickに埋め込んだ値に改行が入り、SyntaxErrorで保存ボタンが無反応になりました。値をエスケープする関数に通して解決しています。
Q. claspを使えば反映の手間は減りますか?
エディタへ手で貼る手間は減らせます。ただし公開中のURLに反映するには、新しいバージョンでデプロイする操作が別に必要です。
Q. AIに直してもらったGASのコードが反映されないときは?
まずAIが直したのはローカルのファイルだけではないか確かめてください。エディタに貼って保存し、新バージョンでデプロイするまで、公開中のURLは古いままです。
Q. デプロイした後に元のバージョンへ戻せますか?
戻せます。デプロイを管理で公開中のデプロイを編集し、バージョンの欄で以前のバージョンを選んでデプロイします。
GASやAI活用の新しい記事をお知らせします
レコプラの公式LINEでは、記事の更新をお届けしています。GASやClaude Codeの実録を読み逃したくない人はどうぞ。
この記事を書いた人
ゆうき。レコプラ(desire-planet.com)運営。Claude Codeに日本語で指示を出して、業務で使う仕組みを作っています。AI活用の受託として、企業向けのシステム納品とAI導入の継続支援を実務で担当。この記事のGASのWebアプリは、取引先の業務アプリとして保守しているものです。
公開日: 2026年9月29日 最終更新日: 2026年9月29日
出典
- Google Apps Script公式「Create and manage deployments」(2026年9月29日取得)
- Google Apps Script公式「Web Apps」(2026年9月29日取得)
- Qiita(YutakaArai)の投稿(2026年9月29日取得)
スプレッドシートの切り替え日、ID参照の箇所数、ファイル構成は、取引先の業務アプリの作業記録にもとづく実例です。再現コードのIDは架空の値です。




















