ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】チェックボックスを一気にすべてON/OFFする方法(Gスプレッドシート)
複数のチェックボックスを一気に変更することができます。
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- シート内の変化により(OnEdit)起動させる方法がわかります。
- getDataRegionによりある程度の範囲を取得する方法がわかります。
なので、サクッとマスターして
と答えてあげてください。
動画はこちら
シートはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)
スクリプト
function onEdit(e) {
const SH_NAME = "チェックボックスでチェック" //シート名
const CKPOS = "G6" //一括チェックボックスのセル位置
const range = e.range
if ((range.getSheet().getName() != SH_NAME) || //シート名が異なる
(range.getA1Notation() != CKPOS)) //位置が異なる
return
const region = range.getDataRegion()
range.isChecked() ? region.check() : region.uncheck()
}
ポイント
range.getDataRegion()
で特定のセルから隣接した範囲(Ctrl+Aで指定した範囲)を取得することができます。
なので、その範囲に対して check()
でチェックボックスのON uncheck()
でチェックボックスのOFFができます。
この動きをGASで実現する
onEdit関数は、どのシートの操作でも飛んでくるので、シート名をチェックして
すぐに返してあげましょう。
最後までご覧いただきありがとうございます。
つぎはこちら
【GAS】チェックボックスのON/OFFで項目をグレーアウトしメールを返信する方法
条件書式の効果的な使用方法がわかります。
チェックボックスのON/OFFにより項目のON/OFFが設定できるようになります。
最初は、以下のようにやっていたのですが、
function onEdit(e) {
const Array1 = ['I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'K3']
const SH_NAME = "チェックボックスでチェック"
if (e.source.getActiveSheet().getName() != SH_NAME) return
if ((e.range.getRow() != 2) || //全国の行
(e.range.getColumn() != 7)) return //全国のカラム
const sh = SpreadsheetApp.getActiveSheet()
const nval = e.range.getValue()
Array1.map((val) => { sh.getRange(val).setValue(nval) })
}
以下を参考にさせていただきました。