徹底解説!GASでチェックボックスの判定と動的な追加・削除、メール送信をマスターする方法


GASでチェックボックスを判定する方法
チェックボックスの状態を判定するのはとてもシンプルだ。スプレッドシート上では、チェックされている場合はTRUE、されていない場合はFALSEになる。
チェックボックスの状態を取得する
まずはセルの値を取得して、それがTRUEかどうかを確認する必要がある。
function checkCheckboxStatus() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A1");
var value = range.getValue();
if (value === true) {
Logger.log("チェックボックスはオンです。");
} else {
Logger.log("チェックボックスはオフです。");
}
}
✅ SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()はアクティブなスプレッドシートを取得する。getRange(“A1”)でセルA1を指定し、getValue()でその値を取得する。判定は単なる条件分岐で完了だ。

GASでチェックボックスを動的に追加・外す方法
簡単にチェックボックスを操作するには、セルに対してデータの検証機能を使うといいさ。
チェックボックスを追加する
チェックボックスはデータ検証ルールをセットすることで追加できる。
function addCheckbox() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A2");
var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
range.setDataValidation(rule);
}
✅ SpreadsheetApp.newDataValidation()はデータ検証を開始し、requireCheckbox()でチェックボックスを設定、.build()でルールを構築する。setDataValidation(rule)を使ってセルに適用することで完成だ。
チェックボックスを外す(削除する)
チェックボックスを外す場合はデータ検証をクリアすればいい。
function removeCheckbox() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A2");
range.clearDataValidations();
}
✅ clearDataValidations()メソッドでそのセルのデータ検証をクリアし、チェックボックスを削除することができる。

チェックボックスの状態に応じたメール送信
チェックボックスがオンになったときにメールを送信するには少し工夫が必要だ。
チェックボックスの状態を監視してメールを送信
スクリプトからメールを送信するためにはGmailAppを使う。
function sendEmailOnCheck() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A3");
var value = range.getValue();
if (value === true) {
GmailApp.sendEmail("example@example.com", "チェックボックスがオンになりました", "A3のチェックボックスがオンです");
}
}
✅ GmailApp.sendEmail()を使えばメールが送信できる。第一引数に受信者のメールアドレス、第二引数に件名、第三引数にメール本文を設定する。


練習問題
次の問題に挑戦して、今日学んだことを確認しよう。
- スプレッドシートのB1セルにチェックボックスを追加して、オンになったときに「チェックボックスがオンになりました」という内容で自分宛にメールを送信するスクリプトを作成してください。メールの件名と本文を自由に設定できるようにしなさい。
解答・解説
function addCheckboxAndSendEmail() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("B1");
var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
range.setDataValidation(rule);
var value = range.getValue();
if (value === true) {
GmailApp.sendEmail("your-email@example.com", "チェックボックスがオンです", "B1のチェックボックスがオンになりました!");
}
}
このスクリプトは次のように動作します:
– SpreadsheetApp.getActiveSpreadsheet().getActiveSheet():スプレッドシートを取得し、現在アクティブなシートを対象とします。
– getRange(“B1”):B1セルを指定します。
– requireCheckbox().build():チェックボックスをデータ検証として追加します。
– GmailApp.sendEmail():B1のチェックボックスがオンの場合にメールを送信します。件名と本文を指定できます。