RENOY

GAS 修正が反映されない原因|clasp pushの成功表示とWebAppデプロイ、二段の罠

目次

「直したはずなのに、本番の動きが変わらない」——GASの運用でいちばん時間を溶かすのが、この状態です。

エラーは出ません。ログも正常です。だからつい、コードのロジックを疑って読み返してしまいます。ところが実際の原因は、書いたコードが本番に届いていないことでした。しかも原因は二段ありました。

この記事では、実案件(匿名)で追いかけた「修正が反映されない」の原因と、再発させないための確認手順を整理します。

この記事の結論

  • 動きが変わらないときは、ロジックより先に反映経路を疑う
  • clasp pushは成功表示でも反映されていないことがある
  • WebAppは再デプロイするまで旧コードを配信し続ける

一段目の罠:clasp pushが成功しても反映されていない

GASをローカルで管理していると、clasp pushでコードをGoogle側へ送ります。このとき、コマンドは成功したという表示を返します。

問題は、成功表示が出ても実際にはコードが反映されていないケースがあることです。ターミナル上は何も異常がないので、開発者は「送信は済んだ」と信じて次の工程へ進みます。ここが最初の落とし穴です。

結果として、本番では前のコードが動き続けます。それでも動作自体は正常なので、エラー通知も出ません。「送ったのに変わらない」ときは、送れていない可能性を先に潰す必要があります。

二段目の罠:WebAppは再デプロイまで旧コードを配信する

コードが正しく反映されていても、まだ終わりではありません。GASをWebApp(/execのURLで外部から呼び出す形)として公開している場合、配信されるのは公開済みのバージョンです。

つまり、エディタ上のコードを新しくしても、新しいバージョンを選んでデプロイし直すまで、/execは旧コードを返し続けます。ここでもエラーは出ません。URLは生きていて、レスポンスも返る。ただし中身が古い、という状態です。

「エディタから手動実行すると直っているのに、URL経由だと直っていない」——この症状が出たら、ほぼこの罠です。

反映されない原因の切り分けフロー

二段の罠を踏まえると、確認の順序はこうなります。

大事なのは、ロジックを疑うのを最後に回すことです。コードを読み返す作業はいちばん時間がかかるのに、原因である確率は高くありません。先に経路を確認したほうが、圧倒的に速く終わります。

症状別の見分け方

症状疑うべき箇所
エディタ上のコードも古いpushが反映されていない
エディタ上は新しいが/execは古い再デプロイをしていない
どちらも新しいが挙動が変わらないロジック/キャッシュ/設定値

まず「エディタ上のコードは新しくなっているか」を見る。これだけで、一段目か二段目かが分かれます。

対策:push後にpullして差分を検証する

一段目の罠は「成功表示を信じない」ことでしか防げません。そこで私たちは、次の手順を標準化しました。

  1. clasp pushでコードを送る
  2. 別ディレクトリclasp pullで取得する
  3. 手元のコードと取得したコードの差分を取る
  4. 差分がなければ反映済み、あれば再push

ポイントは、作業中のディレクトリではなく別ディレクトリへpullすることです。同じ場所にpullすると、手元のコードを上書きしてしまい、比較になりません。「送ったつもり」を、機械的に検証できる形に置き換えるのが目的です。

WebAppの場合は、これに新しいバージョンを選んでデプロイし直す工程を足します。この2つをリリース手順書に書き込んでおけば、担当者が変わっても同じ事故は起きません。

なぜこの種のトラブルは長引くのか

理由はシンプルで、エラーが出ないからです。

システムのトラブルは、エラーメッセージが出れば調査の入口になります。しかし今回の二段の罠は、どちらも「正常に見える」状態で発生します。成功表示は出る、URLは応答する、ログも問題ない。手がかりがないので、消去法でコードを読み返すしかなくなります。

だからこそ、手順として先に潰すという発想が要ります。トラブルシューティングの技術ではなく、リリース手順の設計の問題として扱う。これが再発防止の考え方です。

なお、claspやGASのデプロイ周りの仕様は変わることがあります。最新の挙動は必ず公式ドキュメントで確認してください。

中小企業のGAS運用で押さえるべきこと

社内でGASを回している会社ほど、この問題は深刻になります。「作った人しか手順を知らない」状態だと、修正のたびに同じところで止まるからです。

持ち帰っていただきたい判断軸は一つです。

動きが変わらないときは、ロジックより先に反映経路(push → バージョン → デプロイ)を疑う。

そしてもう一つ。リリース手順を文書に残すこと。「pushしたらpullして差分を見る」「WebAppは新バージョンで再デプロイする」——たった2行でも、書いてあるかどうかで復旧時間が変わります。自動化の価値は、作ったときではなく、直し続けられるかどうかで決まります。

よくある質問

Q. GASを修正したのに動きが変わりません。何を確認すればいいですか? コードのロジックより先に反映経路を疑ってください。clasp pushで実際にコードが上がったか、WebAppなら新しいバージョンでデプロイし直したか。この二点で大半が説明できます。

Q. clasp pushが成功と表示されれば、コードは反映されていますか? 必ずとは言えません。成功表示が出ても実際には反映されていないことがあります。別ディレクトリへclasp pullして手元のコードと差分を取れば、反映済みかを客観的に確認できます。

Q. GASのWebAppで /exec が古い挙動のままなのはなぜですか? WebAppは公開済みのバージョンを配信するため、コードを更新しても新しいバージョンを選んでデプロイし直すまで旧コードが返り続けます。エラーは出ないので気づきにくい挙動です。

まとめ

  • 「直したのに変わらない」の原因は、コードではなく反映経路にあることが多い
  • 一段目はclasp pushの成功表示。成功と出ても未反映の場合がある
  • 二段目はWebAppのデプロイ。新バージョンで公開し直すまで/execは旧コードを返す
  • 対策は、push後に別ディレクトリへpullして差分を検証し、手順書に残すこと

RENOYでは、GASの新規開発だけでなく、すでに動いている仕組みの「直せる状態」づくり——リリース手順の整備や属人化の解消もお手伝いしています。「社内で作ったGASが触れなくなっている」という段階のご相談も歓迎です。まずはお気軽に無料個別相談(オンライン・60分)をご利用ください。サービス内容をまとめた資料は資料請求からご覧いただけます。

#GAS#clasp#WebApp#デプロイ#業務自動化