
Googleスプレッドシートが好きです。
その中でもチェックボックスが好きです。
今回はチェックボックスを一括でオンオフしたいなと思い、おぼつかない手付きで試行錯誤の末なんとか実現できた話です。
チェックボックスに関して、当ブログでは過去にこんな投稿をしています。
お時間ありましたら覗いていただけると幸いです。
まず調べ始めると、「検索と置換」の機能を使う。
という素晴らしい方法を教えてくださる方がいらっしゃいました。
大変参考になりました。ありがとうございます。
しかし、私の場合、どうしてもiPadアプリ版でも実現したかったのです。この方法ではiPadアプリ版では使えないことがわかり、しばらく空を見つめていました。
そこから持ち直し、再度調べ続けると、スクリプトを使うと実現できるようでした。
手軽に誰でも実行できるようにしたいので、図形等を配置して、それにスクリプトを割り当てる方法を試してみました。
するとこれもまた、iPadアプリ版では動作しないことがわかり、本日二度目のダウンを喫することとなりました。
いくら空を見つめてもそこにあるのは虚空のみ。
己の無知を恥じながら、ただひたすらに検索と試行錯誤をくりかえし、チェックボックスを実行のスイッチとする方法で実現できました。(もちろんiPhoneアプリ版でも動作します。)
以下のようなスクリプトを書いてみました。

(↓上記のキュプチャの内容をブログ本文内に入れてみました。)
function checkAllOff() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange("A1:A");
var range2 = sheet.getRange("C1");
var c1value = range2.getValue();
var mycell = sheet.getActiveCell();
if(mycell.getColumn() === 3){
if(c1value === true){
range.setValue("");
range2.setValue("");
}
}
}
function checkAllOn() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var range = sheet.getRange("A1:A36");
var range2 = sheet.getRange("C2");
var c2value = range2.getValue();
var mycell = sheet.getActiveCell();
if(mycell.getColumn() === 3){
if(c2value === true){
range.setValue(true);
range2.setValue("");
}
}
}
オフ用とオン用の2つのfunctionを作成。
このようなスクリプトを保存したあと、トリガーを以下のように設定。


それでは動作を動画で御覧ください。
●解説など
var range = sheet.getRange(“A1:A”);
で操作対象となるチェックボックスの列の範囲を指定。
オフにする場合は終わりの列を指定しなくても大丈夫。
オンにするほうは、
var range = sheet.getRange(“A1:A36”);
のように終わりの列も指定しないとその列の空白行にtrueが入力されてしまいます。
var range2 = sheet.getRange(“C1”);
で、スイッチとなるチェックボックスがあるセルを指定。
今回はC1にオフ、C2にオンを入れてます。
if(mycell.getColumn() === 3)
でスイッチのチェックボックスを操作したときだけ動作するように、アクティブセルがC列だったとき、という条件をつけています。(Aから順番に1から始まる数なので、C=3)
if(c1value === true){
range.setValue(“”);
range2.setValue(“”);
}
で、スイッチとなるチェックボックスにチェックが入った=trueのときに、range内のチェックボックスの列に空白をセットすることでチェックが外れます。
その後、スイッチとなるrange2(C2のチェックボックス)も空白をセットしてチェックを外しておきます。
if(c2value === true){
range.setValue(true);
range2.setValue(“”);
}
オンの方ではrange内にtrueをセットした後、range2に空白をセットしてチェックを外しておきます。
以上です。
間違い、改善点などございましたらご指導いただけると嬉しいです。
いろいろなサイトを拝見し参考にさせていただきました。
大変勉強になりました。ありがとうございました。
最後までお読みいただきありがとうございました。
ピンバック: チェックボックスで選択したものだけ集計する。~SUMIF関数と併用していろんな組み合わせの合計金額を出す | 松栄シルク工場報 Shoeisilk Factory Report prepared by Sakurai