GAS 目次 - ray88’s diary
各種目次 - ray88’s diary
Google Apps Scriptで安全にコーディングするための基本
Google Apps Script(GAS)では、変数を宣言するために「var」「let」「const」の3つの方法があります。これらの使い分けを正しく理解することで、安全かつバグの少ないコードを書くことができます。本記事では、それぞれの違いと推奨される使い方について詳しく解説します。
3つの変数宣言の基本
まずは、各宣言方法の特徴を一覧で確認しましょう。
宣言方法 | 用途 | 再代入 | 再宣言 | 推奨度 |
`var` | レガシー | 可能 | 可能 | ❌ 避ける |
`let` | 変更される変数 | 可能 | 不可 | ⭕ 推奨 |
`const` | 定数 | 不可 | 不可 | ⭕ 推奨 |
スコープ(有効範囲)の違い
変数が有効な範囲も、それぞれの宣言方法で異なります。
`var` は関数スコープ:
function testVar() { if (true) { var x = 1; } console.log(x); // 1が出力される(ifブロック外でもアクセス可能) }
`let` はブロックスコープ:
function testLet() { if (true) { let y = 1; } console.log(y); // エラー!yはifブロック外では使用できない }
再宣言の違い
`var` の再宣言(危険):
var name = "田中"; var name = "佐藤"; // エラーにならない(意図しないバグの原因)
`let` の再宣言(安全):
let name = "田中"; let name = "佐藤"; // エラー!同じ名前の変数は宣言できない
巻き上げ(ホイスティング)の違い
`var` のホイスティング:
console.log(a); // undefined(エラーにならないが危険)
var a = 5;
`let` のホイスティング:
console.log(b); // エラー!宣言前にはアクセスできない
let b = 5;
現在の推奨される使い方
基本的には `const` と `let` を使い分け、`var` は避けるのがモダンなJavaScriptおよびGASの書き方です。
1. 定数には `const` を使用:
const PI = 3.14159; // 数学定数 const API_URL = "https://example.com/api"; // API URL const MAX_RETRY = 3; // 最大リトライ回数
2. 値が変化するものには `let` を使用:
let counter = 0; // カウンター let userName = ""; // ユーザー名 let isComplete = false; // フラグ // 値の変更 counter++; userName = "田中"; isComplete = true;
3. `var` は避ける:
// ❌ 古い書き方(使用を避ける) var oldStyle = "レガシーコード"; // ⭕ 新しい書き方 let newStyle = "現代的なコード";
GASでの実践例
以下は、実際に `const` と `let` を使ってスプレッドシートを処理する関数の例です。
function processSpreadsheet() { // 定数:変更されない値 const SHEET_NAME = "データ"; const HEADER_ROW = 1; // 変数:処理中に値が変わる let currentRow = 2; let totalCount = 0; // スプレッドシートの取得 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME); // データ処理のループ while (currentRow <= sheet.getLastRow()) { let cellValue = sheet.getRange(currentRow, 1).getValue(); if (cellValue !== "") { totalCount++; } currentRow++; } console.log(`処理完了:${totalCount}件のデータを処理しました`); }
まとめ
現在のベストプラクティスは以下の通りです:
- `const`:値が変更されない定数に使用
- `let`:値が変更される変数に使用
- `var`:使用を避ける(レガシーコードでのみ)
この使い分けを正しく行うことで、より堅牢でメンテナンス性の高いGASコードが書けるようになります。