Google Apps Script (GAS) を使い始めた方にとって、論理演算子は重要な概念です。
この記事では、GASにおける論理演算子の使用方法を、詳細な例と共に解説します。
1. 論理演算子の基本:AND、OR、NOT
GASでの三つの基本的な論理演算子について詳しく見ていきましょう。
1.1 AND演算子 (&&)
AND演算子は、すべての条件が真(true)の場合にのみ、全体を真と判断します。
例:休日(A)で、かつ晴れている(B)場合に、ピクニックに行く。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
function checkPicnicConditions() {
var isHoliday = true;
var isSunny = true;
if (isHoliday && isSunny) {
Logger.log("ピクニックに行きましょう!");
} else {
Logger.log("ピクニックは別の日にしましょう。");
}
}
// 実行結果: ピクニックに行きましょう!
1.2 OR演算子 (||)
OR演算子は、少なくとも1つの条件が真(true)であれば、全体を真と判断します。
例:傘(A)または雨合羽(B)を持っている場合、雨の日でも外出できる。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
function checkRainyDayOutfit() {
var hasUmbrella = false;
var hasRaincoat = true;
if (hasUmbrella || hasRaincoat) {
Logger.log("雨でも外出できます。");
} else {
Logger.log("雨具がないので、外出は控えましょう。");
}
}
// 実行結果: 雨でも外出できます。
1.3 NOT演算子 (!)
NOT演算子は、与えられた条件の真偽を反転させます。
例:晴れていない(曇りまたは雨)場合、屋内で過ごす。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
function checkIndoorActivity() {
var isSunny = false;
if (!isSunny) {
Logger.log("屋内で過ごしましょう。");
} else {
Logger.log("外出を楽しみましょう。");
}
}
// 実行結果: 屋内で過ごしましょう。
2. 複合条件:演算子の組み合わせ
実際のGASプログラミングでは、複数の条件を組み合わせることがよくあります。
この場合、括弧を使って優先順位を明確にすることが重要です。
例:週末(A)で、晴れている(B)か、または平日(NOT A)で、仕事が早く終わった(C)場合に、友人と会う。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
function checkMeetingConditions() {
var isWeekend = true;
var isSunny = true;
var finishedWorkEarly = false;
if ((isWeekend && isSunny) || (!isWeekend && finishedWorkEarly)) {
Logger.log("友人と会いましょう!");
} else {
Logger.log("今日は家でゆっくり過ごしましょう。");
}
}
// 実行結果: 友人と会いましょう!
3. 実践的な例:スプレッドシートデータの検証
GASの実践的な使用例として、Googleスプレッドシートのデータを検証する関数を作成してみましょう。
条件:
- 名前が入力されている(空でない)
- 年齢が18以上である
- メールアドレスに@が含まれている
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
function validateUserData() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) { // 1行目はヘッダーとして扱う
var name = data[i][0];
var age = data[i][1];
var email = data[i][2];
if (name && age >= 18 && email.includes('@')) {
Logger.log(name + "のデータは有効です。");
} else {
Logger.log(name + "のデータは無効です。条件を確認してください。");
}
}
}
この関数は、アクティブなスプレッドシートの各行のデータを検証し、条件を満たすかどうかをログに出力します。
4. 短絡評価(Short-circuit Evaluation)
GASでも短絡評価が適用されます。
これは、左側の条件だけで結果が確定する場合、右側の条件を評価しないという性質です。
4.1 ANDの短絡評価
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
function demonstrateShortCircuitAnd() {
function checkA() {
Logger.log("Aをチェックしています");
return false;
}
function checkB() {
Logger.log("Bをチェックしています");
return true;
}
if (checkA() && checkB()) {
Logger.log("両方true");
} else {
Logger.log("少なくとも1つがfalse");
}
}
// 実行結果:
// Aをチェックしています
// 少なくとも1つがfalse
4.2 ORの短絡評価
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
function demonstrateShortCircuitOr() {
function checkX() {
Logger.log("Xをチェックしています");
return true;
}
function checkY() {
Logger.log("Yをチェックしています");
return false;
}
if (checkX() || checkY()) {
Logger.log("少なくとも1つがtrue");
} else {
Logger.log("両方false");
}
}
// 実行結果:
// Xをチェックしています
// 少なくとも1つがtrue
5. GAS特有の使用例:トリガーと条件付き実行
GASでは、特定の条件下でのみスクリプトを実行するために論理演算子を使用することがあります。以下は、時間主導型トリガーと組み合わせた例です。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
function conditionalExecution() {
var now = new Date();
var dayOfWeek = now.getDay(); // 0 (日曜) から 6 (土曜)
var hour = now.getHours();
// 平日(月-金)の9時から17時の間のみ実行
if ((dayOfWeek >= 1 && dayOfWeek <= 5) && (hour >= 9 && hour < 17)) {
// ここに実行したいコードを書く
Logger.log("営業時間内です。処理を実行します。");
} else {
Logger.log("営業時間外です。処理をスキップします。");
}
}
この関数を時間主導型トリガーで1時間ごとに実行するように設定すれば、営業時間内のみ特定の処理を行うことができます。
まとめ
Google Apps Scriptにおける論理演算子の使用方法を学びました。主なポイントは:
- 基本的な論理演算子(AND、OR、NOT)の動作と使い方
- 複合条件での括弧の重要性
- スプレッドシートデータの検証など、実践的な使用例
- 短絡評価の概念とその有用性
- GAS特有の使用例(トリガーと条件付き実行)
これらの概念を理解し、実際のGASプロジェクトで使用できるようになれば、より柔軟で効率的なスクリプトを書くことができます。
次のステップとして、以下のような課題に挑戦してみるのがおすすめです:
- スプレッドシートの特定の条件を満たすデータを自動的に別のシートにコピーする関数の作成
- フォーム回答に基づいて条件付きで自動返信メールを送信するスクリプトの実装
- カレンダーイベントの条件に基づいて自動的にTodoリストを作成するアプリケーションの開発
GASにおける論理演算子の理解を深め、実践を重ねることで、より高度な自動化や効率化を実現できるでしょう。頑張って練習を続けましょう!
X(旧Twitter) >>> https://twitter.com/pikary_box
Instagram >>> https://www.instagram.com/pikary_box/