GAS(Google Apps Script)を始めたての学習者が
次につまずく代表ポイントがこちら。
- 「この変数は定義されていません」エラーが出る
- どこまでが使える範囲なのか分からない
- 関数の中で作った変数が外で使えない理由が不明
-
letとconstの違いが曖昧 - グローバル変数って何?
この記事では、
- スコープの仕組みを“日常の比喩”で理解
- 日本語コメントだけでアルゴリズム練習
- 最後に GAS コードに翻訳
という流れで、初心者でも絶対につまずかないように整理します。
## 1. スコープ(Scope)とは?
🎯 「変数が使える範囲」のこと
日常の例でいうと:
- 自分の部屋の鍵 → 自分の部屋の中だけで使える
- 家のWi-Fi → 家の中ならどこでも使える
- 駅のWi-Fi → 駅の外では使えない
これと同じで、プログラムの変数にも
使える範囲(スコープ) があります。
🔑 基本のルール(超重要)
| どこで作った? | どこで使える? | 名前 |
|---|---|---|
| 関数の外で作った | プログラム全体 | グローバル変数 |
| 関数の中で作った | その関数の中だけ | ローカル変数 |
## 2. let / const の違い
| 書き方 | 意味 |
|---|---|
let |
値の上書きOK(上書き可能) |
const |
上書きNG(固定する) |
スコープとは関係ありませんが、
初心者はセットで混乱するのでここで整理します。
## 3. 最も多いエラー例
function test() {
let name = "太郎";
}
Logger.log(name); // ❌ エラー:name は定義されていません
理由:
- name は test() の中のローカル変数
- 関数の外では使えない
👉 スコープの理解が“GAS初心者の壁”を超えるカギになります。
## 4. コメントだけで書く「日本語アルゴリズム」
コードを書かず、日本語だけでスコープの理解を深める練習です。
👤 サンプル①:関数の外と中(コメント版)
function showName()
// ① 関数の外に「name」という変数を作る(例:"太郎")
// ② 関数の中で name を表示する(使える)
// ③ 関数の中で作った「age」を外で表示しようとするとエラーになる
📦 サンプル②:買い物合計のスコープ(コメント版)
function calcShopping()
// ① 関数の外に「tax」を作る(例:10)
// ② 関数の中で商品金額を用意(例:1200)
// ③ 税率(tax)は関数内でも使える
// ④ 関数内だけで使う「subtotal」を関数の外で使おうとするとエラー
🎬 サンプル③:映画料金のローカル変数(コメント版)
function moviePrice()
// ① 関数の中で age と price を作る
// ② 関数の外で price を使おうとすると「定義されていません」になる
🚗 サンプル④:車情報のスコープ(コメント版)
function fuelCheck()
// ① 車の情報を関数の中で作る(model, mileage, fuel)
// ② これらの変数は関数の外では使えない
📚 サンプル⑤:本のデータ(コメント版)
function showBook()
// ① book オブジェクトを関数の中で作る
// ② 関数の外で book を使おうとするとエラー
## 5. 回答コード(日本語の翻訳結果)
ここからは、上記のコメントを
すべて GAS のコードに翻訳した回答例です。
👤 サンプル①:関数の外と中
const name = "太郎"; // グローバル変数
function showName() {
Logger.log(name); // 使える(OK)
const age = 20; // ローカル変数
Logger.log(age); // 使える(OK)
}
showName();
Logger.log(name); // OK
Logger.log(age); // ❌ エラー:age は定義されていません
📦 サンプル②:買い物合計のスコープ
const tax = 10; // グローバル変数
function calcShopping() {
const price = 1200; // ローカル変数
const subtotal = price + tax;
Logger.log("小計:" + subtotal);
}
calcShopping();
Logger.log(tax); // OK
Logger.log(subtotal); // ❌ エラー
🎬 サンプル③:映画料金のローカル変数
function moviePrice() {
const age = 15;
const price = age <= 15 ? 1000 : 1800;
Logger.log("映画料金:" + price + "円");
}
moviePrice();
Logger.log(price); // ❌ エラー
🚗 サンプル④:車情報のスコープ
function fuelCheck() {
const model = "プリウス";
const mileage = 22;
const fuel = 5;
const distance = mileage * fuel;
Logger.log(distance);
}
fuelCheck();
Logger.log(model); // ❌ エラー
📚 サンプル⑤:本のデータ
function showBook() {
const book = {
title: "GAS入門",
pages: 280
};
Logger.log(book.title);
}
showBook();
Logger.log(book); // ❌ エラー
## 6. まとめ
- スコープとは「変数が使える範囲」
- 外で作った変数は全体で使える → グローバル
- 関数の中で作った変数はその中だけ → ローカル
- 初心者エラー No.1 の原因が「スコープ」
- GAS は関数を跨ぐことが多いので理解必須