GAS関数でスコープを制覇
GAS基礎と関数定義
Google Apps Script(GAS)はJavaScriptをベースにしたスクリプト言語で、Google Workspace のサービスを自動化できます。まずは関数定義から始めましょう。関数は function キーワードで宣言します。
function helloWorld() {
Logger.log('Hello, GAS!');
}
上記の helloWorld は、GAS の実行環境で呼び出すと Logger.log にメッセージを出力します。関数は再利用可能なコードブロックであり、同じ処理を何度も呼び出せる点が大きなメリットです。
引数と戻り値
関数にデータを渡すには引数を使います。引数は関数宣言時にカンマで区切って列挙します。
function add(a, b) {
return a + b;
}
上記の add は return キーワードで計算結果を呼び出し元に返します。戻り値は return の後に続く式で決定され、関数の実行が終了します。戻り値がない場合は undefined が返ります。
スコープと変数
変数は宣言場所によってスコープが決まります。var、let、const の違いを理解してローカル変数とグローバル変数を使い分けましょう。
// グローバル変数
var globalVar = 'global';
function scopeDemo() {
// ローカル変数
let localVar = 'local';
Logger.log(globalVar); // 参照可能
Logger.log(localVar); // 参照可能
}
上記では globalVar は関数外で宣言されているため、関数内からもアクセスできます。一方 localVar は scopeDemo 内でのみ有効です。スコープを意識することで、変数の衝突や予期せぬ値の上書きを防げます。
再利用のベストプラクティス
GAS で作成した関数は、プロジェクト内だけでなく別プロジェクトでも再利用できるようにモジュール化すると便利です。以下のポイントを押さえておきましょう。
- 関数は単一責任(Single Responsibility)を意識して作る。
- 引数は必要最低限にし、デフォルト値を設定して柔軟性を持たせる。
- 戻り値はオブジェクトや配列で返すことで、呼び出し側での扱いを簡潔に。
- グローバル変数は極力避け、必要なら
PropertiesServiceで永続化。 - コメントや JSDoc を付けて、他人(将来の自分)にも分かりやすく。
例えば、複数のスプレッドシートで共通のデータ取得ロジックを使いたい場合、以下のように関数を切り出しておくと再利用がスムーズです。
/**
* 指定したシートからデータを取得
* @param {string} sheetName シート名
* @return {Array} データ配列
*/
function getSheetData(sheetName) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
return sheet.getDataRange().getValues();
}
この関数を別プロジェクトにコピーすれば、同じデータ取得処理をすぐに利用できます。
コメント
コメントを投稿