earthpg:GAS専門のプログラミングスクール

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

GASを使ってスプレッドシートのチェックボックスを操作したいんですけど、どうやって判定や追加・削除すればいいのかよくわからなくて…
猫男
猫男
catman
catman
よし、catmanが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()を使えばメールが送信できる。第一引数に受信者のメールアドレス、第二引数に件名、第三引数にメール本文を設定する。

すごい!これでGASを使ってチェックボックス操作がばっちりできるようになった気がします!
猫男
猫男
catman
catman
その通りだ。しっかり練習すれば、さらに複雑な操作も可能になるさ。がんばれ!

練習問題

次の問題に挑戦して、今日学んだことを確認しよう。

  1. スプレッドシートの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のチェックボックスがオンの場合にメールを送信します。件名と本文を指定できます。