スプレッドシートでラジオボタンは作成できる?

GoogleスプレッドシートでExcelのラジオボタン・オプションボタンのようなものを配置したいと思ったことはありませんか?スプレッドシートにはラジオボタン機能は搭載されていませんが、擬似的なラジオボタンを作成することが可能です。この記事では、スプレッドシートで擬似的なラジオボタンの作成方法をご紹介していきます。

それでは、スプレッドシートで擬似的なラジオボタンの作成を行ってみましょう。まずは、セルにチェックボックスの挿入を行います。対象のセルを選択した状態で画面上部の「挿入」タブをクリックして表示されるメニューの中から「チェックボックス」をクリックしましょう。

これで、チェックボックスを挿入することができます。チェックボックス自体をクリックすることで、チェックボックスのオン・オフを切り替えることができます。

あとは、同じ手順で対象範囲にチェックボックスを追加しましょう。この例では、A1セルからE1セルまでチェックボックスを配置しています。現時点では、画像のようにすべてのチェックボックスのオン・オフを自由に切り替えられるためラジオボタンとしては機能しません。

ラジオボタンとして起動させるには、「Google Apps Script(GAS)」を使用してスクリプトを組みます。画面上部の「拡張機能」タブをクリックしてメニューを開き、「Apps Script」をクリックしましょう。

スクリプトの編集画面が表示されるので、下記のスクリプトを入力していきます。スクリプトの入力が完了したら、画面上部の「保存」ボタンをクリックしましょう。アカウントのログイン画面が表示されるので、画面の指示通りに進みます。
function radioCheckbox() {
var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得する
var myCell = mySheet.getActiveCell(); //アクティブセルを取得する
// 範囲を指定する(1行目の1〜5列目までの指定)
if ( myCell.getRow() == 1 && myCell.getColumn() >= 1 && myCell.getColumn() <= 5 ) {
var rule = myCell.getDataValidation();
if (rule != null) {
var criteria = rule.getCriteriaType();
// チェックボックス
if ( criteria == 'CHECKBOX' ) {
mySheet.getRange("A1:E1").setValue(false); // 範囲を一度すべて解除する
myCell.setValue(true); // アクティブセルだけ有効にする
}
}
}
}

自分で作成したスクリプトを最初に保存する際は、画像のように「このアプリはGoogleで確認されていません」という警告画面が表示されます。「(シート名)に移動」をクリックすることで問題なく保存することができるので、ここから進みましょう。

スクリプトの保存が完了したら、左側メニューの「トリガー」をクリックして開きます。画面右下の「トリガーを追加」をクリックしましょう。

「(シート名)のトリガーを追加」ダイアログボックスが表示されるので、「イベントの種類を選択」のプルダウンメニューから「変更時」を選択して「保存」ボタンをクリックしましょう。こちらもアカウントのログイン画面が表示されるので、画面の指示に従ってトリガーの保存を行いましょう。

あとは左側メニューの「コード」をクリックしてスクリプトを表示して、画面上部の「実行」ボタンをクリックしましょう。これで、スクリプトが実行されます。

この状態でいずれかのチェックボックスをクリックしてオンにしてから、別のチェックボックスをクリックしてみましょう。スクリプトの反映にラグがありますが、最初にクリックしたチェックボックスのチェックが解除されて別のチェックボックスのチェックのみが残るようになりますよ。
以上が、スプレッドシートで擬似的なラジオボタンの作成方法の説明となります。