
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に空白をセットしてチェックを外しておきます。
以上です。
間違い、改善点などございましたらご指導いただけると嬉しいです。
いろいろなサイトを拝見し参考にさせていただきました。
大変勉強になりました。ありがとうございました。
最後までお読みいただきありがとうございました。
2023年4月28日追記
スクリプトの初回実行時に承認が必要なことを書き忘れていました。
初回実行時、(または一度も実行しないままトリガーの設定を保存したとき)は承認が必要です。

「権限を確認」をクリック。
次にこのような画面で驚きますが、

安全なページに戻りたくなりますが、落ち着いて、左下に小さく書かれた「詳細」をクリック。
その下に、「スクリプト名(安全ではないページ)に移動」が出てくるので、勇気を出してクリック。

そして「許可」をクリック。
これで承認されます。
次回実行以降は、この画面は出てきません。
気になる方は、
「GAS 初回実行時」などで検索してみてください。
最後までお読みいただきありがとうございました。
ピンバック: チェックボックスで選択したものだけ集計する。~SUMIF関数と併用していろんな組み合わせの合計金額を出す | 松栄シルク工場報 Shoeisilk Factory Report prepared by Sakurai
初めまして。
まさしく同じような使い方をiPadでしたくてこのページにたどり着きました。
スクリプトも見様見真似でどこに書くのかなども調べ、トリガーも見つけ出し設定を行ってみたのですが、うまく作動しません。
トリガーの保存を押すと権限の請求がされ、アカウントを選択するとアプリがGoogleで確認されていないと表示されてしまいます。
対処法を教えていた開けるととっても助かるのですが、、、
いいねいいね
Yukaさま
コメントいただきありがとうございました。
スクリプトの初回実行時は、承認が必要になります。
ポップアップに驚かされますが、左下に小さく書いてある「詳細」をクリックし、
その下に出てきた、「スクリプト名(安全ではないページ)に移動」をクリックします。
次の画面で「許可」を選択すると、スクリプトが動作するようになります。
これは、誰でも初回実行時には必要な操作ですので安心して進んでください。
この記事末に追記したので、そちらもご覧いただけると嬉しいです。
なぜ、このようなプロセスが必要なのかは私もよくわかりません。。。
「GAS 初回実行時」などで検索すると、詳しく書いてくださっている方がいらっしゃいますので、そちらもご参考にされてください。
同じように悩んで、この記事にたどり着いていただきとても嬉しいです。
ありがとうございます!
今後ともよろしくお願いいたします。
いいねいいね
返信と、許可の設定もわかりやすく記載いただきありがとうございます。
出席確認で使用したいので数行分の設定が必要で、
まだまだ1回で全部を消すことには至っていませんが、
許容範囲で使用できるようにまで設定できました。
ありがとうございました。
いいねいいね: 1人