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


GASでチェックボックスを判定する方法
チェックボックスの状態を判定するのはとてもシンプル。
チェックされている場合はTRUE、されていない場合はFALSEになる。
ってことで、セルの値を取得して、それがTRUEかどうかを確認しよう。以下のスクリプトはA1にチェックボックスがある想定だ。
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でチェックボックスを動的に追加・削除・外す方法
チェックボックスを操作してみよう。
チェックボックスを追加する(初期値は false)
まずはチェックボックスそのものを追加する方法を紹介しよう。
チェックボックスはデータ検証ルールをセットして追加できるんだ。 さらに、最初に false
を入れておけば、未チェックの状態から始められる。
function addCheckbox() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A2");
var rule = SpreadsheetApp.newDataValidation().requireCheckbox().build();
range.setDataValidation(rule); // チェックボックスを設定
range.setValue(false); // 初期値を未チェックに
}
SpreadsheetApp.newDataValidation()でデータ検証の設定を開始し、requireCheckbox()でチェックボックスを指定。
build()でルールを作り、setDataValidation(rule)でセルに反映させる。
そのあと、setValue(false)
でチェックを外した状態にしておくのがポイントだ。
チェックボックスを完全に削除する
チェックボックス自体を消したいときは、データ検証をクリアすればいい。 あわせて中身(true/false)も消すなら、clearContent()
も使おう。
function removeCheckbox() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A2"); range.clearDataValidations(); // チェックボックスを削除
range.clearContent(); // 値も消す
}
clearDataValidations()はセルからチェックボックスの設定を取り除いてくれる。clearContent()
は値そのものも削除する命令だ。
チェックボックスを外す(falseに戻す)
チェックを解除したいときは、チェックボックス自体は残したまま、値だけ false
にすればOK。
function uncheckCheckbox() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A2");
range.setValue(false); // チェックを外すだけ
}
見た目は変わらないけど、「未チェック」に戻すだけならこの方法で十分だ。
えっ、チェックボックスにチェックを入れたい?
そんなときは値をfalseじゃなくてtrueにしてみよう。

GASでチェックボックスの状態に応じたメール送信
チェックボックスがオンになったときにメールを送信するには少し工夫が必要だ。
「スプレッドシートが編集された瞬間」に反応するonEdit(e) 関数を使えば、チェックボックスがオンになった瞬間にメール送信できる。
次のスクリプトは、A列にチェックボックスがある想定だ。
function onEdit(e) {
var range = e.range;
var sheet = range.getSheet();
// A列を対象にする
if (sheet.getName() === "シート1" && range.getColumn() === 1) {
var value = e.value;
// チェックが入った(trueになった)ときだけメール送信
if (value === "TRUE") {
GmailApp.sendEmail(
"example@example.com",
"チェックされました",
range.getA1Notation() + " のチェックボックスがオンになりました。"
);
}
}
}
GmailApp.sendEmail()では、第一引数に受信者のメールアドレス、第二引数に件名、第三引数にメール本文を設定する。


練習問題
スプレッドシートのB1セルにチェックボックスを追加して、オンになったときに「チェックボックスがオンになりました」という内容で自分宛にメールを送信するスクリプトを作成してください。メールの件名と本文を自由に設定できるようにしなさい。
解答・解説
function onEdit(e) {
var range = e.range;
var sheet = range.getSheet();
// B1セルが対象かどうか確認
if (sheet.getName() === "シート1" && range.getA1Notation() === "B1") {
if (e.value === "TRUE") {
GmailApp.sendEmail(
"your-email@example.com",
"チェックされました",
"B1のチェックボックスがオンになりました!"
);
}
}
}
onEdit(e)
: ユーザーがスプレッドシートを編集したときに自動で呼ばれる関数。手動では実行できない。e.range
: 編集されたセルの位置を表す。range.getSheet()
: 編集されたシートを取得。range.getA1Notation()
: 編集されたセルの位置(例:"B1"
)を文字列で取得。e.value === "TRUE"
: チェックボックスがオンになったときだけ実行。GmailApp.sendEmail()
: メールを送信する命令。