GASのデバッグは、次の3ステップでできます。
- 止めたい行の行番号の左をクリックして、ブレークポイントを置く
- 実行する関数を選んで、「デバッグ」ボタンを押す
- 処理が止まったら、右側のデバッガで変数の中身を確認する
私は派遣先でGASやVBAによる業務効率化を担当してきましたが、実際の現場では、ツールの制作者でさえ予想もしないような使われ方をされたりして、思わぬエラーの問い合わせを受けたりします。業務時間外の22時過ぎであるにも関わらず「なるはやで解決してほしい」という問い合わせも決して珍しくはありません(苦笑)。
そんなとき、原因をすばやく突き止めるために一番役に立ったのが、このデバッグ実行です。この記事では、現行のエディタ画面での基本操作から、止まらないときの対処、生成AIとの組み合わせ方まで解説します。
サンプルコードを用意する
まずは練習用に、配列の合計を求めるだけの短い関数を用意します。スクリプトエディタにそのまま貼り付けて試してみてください。
function sumScores() {
const scores = [80, 65, 92];
let total = 0;
for (let i = 0; i < scores.length; i++) {
total += scores[i]; // ここにブレークポイントを置く
}
console.log(total);
}
ブレークポイントの設定とデバッグ実行
ブレークポイントを設定する
ブレークポイントは、デバッグ実行のときに処理を一時停止させる目印です。止めたい行の行番号の左側をクリックすると、丸印が表示されます。解除するときは、同じ丸印をもう一度クリックします。

GAS ブレークポイントの設定
サンプルコードでは、total += scores[i]; の行に設定してみましょう。
デバッグ実行する
ツールバーのプルダウンで実行する関数(ここでは sumScores)を選び、「デバッグ」ボタンを押します。「実行」ボタンではブレークポイントで止まらないので注意してください。

GAS デバッグボタン
ブレークポイントの行に来ると処理が止まり、画面右側にデバッガが開きます。
余談ですが、以前のスクリプトエディタのデバッグボタンは「虫」のようなマークのボタンでした。

GAS 以前のデバッグボタン
ちなみに、プログラムの不具合を「バグ(bug=虫)」と呼ぶのは、昔のコンピュータに本物の虫が入り込んで故障したという逸話が由来だと言われています。デバッグはその「虫を取り除く」作業というわけで、デバッグボタンが「虫」のようなマークのボタンだったのは、おそらくそのためだったのではないかと考えられます。
変数・配列の中身を確認する
デバッガの「変数」欄には、止まった時点の変数の値が一覧で表示されます。サンプルコードなら、i、total、scores の中身を確認できます。配列やオブジェクトは、左の矢印をクリックすると中身を展開できます。

GAS デバッガ 変数の確認
「ここではこの値になっているはず」という想定と実際の値を見比べるのが、デバッグの基本です。スプレッドシートから読み込んだデータが空だった、数値のつもりが文字列だった、といった原因の多くはここで見つかります。
ステップ実行で一行ずつ進める
止まったあとは、デバッガ上部のボタンで処理を少しずつ進められます。
| ボタン | 動き |
|---|---|
| 再開 | 次のブレークポイントまで一気に進める |
| ステップオーバー | 1行だけ進める(関数の呼び出しは中に入らず丸ごと実行) |
| ステップイン | 呼び出し先の関数の中に入って進める |
| ステップアウト | 今いる関数を最後まで実行して、呼び出し元に戻る |

GAS デバッガ ステップ実行
サンプルコードで「再開」を押すたびに、i と total が 0→80、145、237 と変わっていく様子が確認できます。
ブレークポイントで止まらないときの対処
「ブレークポイントを置いたのに止まらない」ときは、次の4つを確認してください。
- 「実行」ボタンを押している:止まるのは「デバッグ」ボタンで実行したときだけです。
- 別の関数を実行している:ツールバーの関数名が、ブレークポイントを置いた関数(またはそれを呼び出す関数)になっているか確認します。
- その行まで処理が届いていない:if文の条件が成り立たない場合や、手前でエラーが出ている場合は到達しません。関数の1行目にも置いて確かめましょう。
- onEdit(e) などのトリガー関数:エディタから直接動かすと、引数 e が空のままになります。次のようなテスト用の関数を作り、そちらを「デバッグ」で実行します。
function testOnEdit() {
const e = {
range: SpreadsheetApp.getActiveSheet().getRange('A1'),
value: 'テスト'
};
onEdit(e);
}console.logとの使い分け
ブレークポイントは、手元で原因をじっくり探すときに向いています。一方、トリガーや定期実行のように処理を止められない場合は、console.log で値を記録しておき、あとから「実行数」画面で確認します。
| 場面 | 向いている方法 |
|---|---|
| エディタで実行して原因を探す | ブレークポイント |
| トリガー・定期実行で何が起きたか調べる | console.log |
| ループ中の値の変化をまとめて見る | console.log |
現場から「動かない」と問い合わせが来たときも、あらかじめ要所に console.log を入れておくと、どこで止まったかをすぐに追えます。
生成AIと組み合わせたデバッグ
今は ChatGPT や Claude にコードを書かせるのが当たり前になりました。ただ、AIが書いたコードは「それらしく見えて動かない」ことも多く、最終的に原因を特定するのはデバッグです。
コツは、デバッガで確認した「実際の値」をAIに渡すことです。
以下のGASの関数で、合計が237になるはずが0になります。
5行目で止めたとき、シートから読み込んだはずのscoresは [] でした。
原因と修正案を教えてください。
(ここにコードを貼る)「動きません」とだけ聞くより、回答の精度が大きく上がります。AIを使いこなすためにも、「どこで何が起きているか」を自分で確かめる力は欠かせません。
まとめ
GASのデバッグは、ブレークポイントを置いて「デバッグ」ボタンで実行し、変数の中身を確認するだけです。
- 止まらないときは、実行ボタン・関数の選択・処理の通り道・トリガー関数を確認する
- 止められない処理は console.log と使い分ける
- AIに相談するときは、デバッガで見た実際の値を添える


