0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎓 GAS:スコープ(変数の有効範囲)を「日本語アルゴリズム → コード」で身につける

Posted at

GAS(Google Apps Script)を始めたての学習者が
次につまずく代表ポイントがこちら。

  • 「この変数は定義されていません」エラーが出る
  • どこまでが使える範囲なのか分からない
  • 関数の中で作った変数が外で使えない理由が不明
  • letconst の違いが曖昧
  • グローバル変数って何?

この記事では、

  • スコープの仕組みを“日常の比喩”で理解
  • 日本語コメントだけでアルゴリズム練習
  • 最後に 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 は関数を跨ぐことが多いので理解必須

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?