スプレッドシートのチェックボックスの値を判定し処理を実行する方法【GAS】

本記事では、GAS(Google Apps Script)を使ってスプレッドシート内のチェックボックスの値によって判定し、処理を実行する方法を解説していきます。

実際の例を交えて解説しますのでご覧くださいませ🙃

やりたいこと

チェックを入れた列のアイテム名を表示する

checkbox-1.gif

手順1:シートを作る

checkbox-1.gif

  • A列:チェックボックス
  • B列:商品名

上記のようなシートを用意します。

チェックボックスの挿入方法

スプレッドシートの「挿入」タブを選んだら「チェックボックス」の欄が出てきます。

手順2:GASを用意してコードを書く

「拡張機能」タブから「Apps Script」を選択します。そうすると、App scriptが別タブで開かれます。

4dd25d949b72d384b09b19011478f5bf.jpg

ここでコードを書いていきます。

下記コードを貼り付けましょう。

function myfunction() {
  // スプレッドシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // シートを取得
  const sheet = ss.getActiveSheet();
  // セル(A2:B4)を取得
  const range = sheet.getRange('A2:B4');

  // 値を取得
  const values = range.getValues();

  let checkvalue = '';
  for( let i = 0; i < values.length; i++ ) {
    if( values[i][0] === true ) {
      checkvalue = checkvalue + values[i][1];
    }
  }
  Browser.msgBox(checkvalue + 'が選択されました', );
}

これだけで想定した動きになりますが、1行ずつ詳しく解説します。解説が不要な場合は手順3へ移動ください。

アクティブなスプレッドシートを取得する

 const ss = SpreadsheetApp.getActiveSpreadsheet();

**SpreadsheetApp.getActiveSpreadsheet();**で現在アクティブなスプレッドシートを取得できます。

今回はスプレッドシートからGASを開いた想定で上記コードとしています。

その他URLを指定したopenByUrl(url)、スプレッドシートのIDを指定するopenById(id)でも可能です。
参考:https://www.acrovision.jp/service/gas/?p=237

スプレッドシートのシート名を取得する

 const sheet = ss.getActiveSheet();

**getActiveSheet()**で現在アクティブなシートのデータを取得することができます。

スプレッドシートのセルを取得する

  const range = sheet.getRange('A2:B4');

セル情報の取得です。今回はA2(2行目のチェックボックス)からB4(みかん)の範囲を取得したいので上記のようにしています。

スプレッドシートの値を取得する

const values = range.getValues();

指定したRangeオブジェクトにアクセスして、**getValues()**で値を取得することができます。

今回は複数のセル範囲のためgetValues()を使っていますが単体のセルの値を取る場合はgetvalue()になります。

チェックを判定する

  let checkvalue = '';
  for( let i = 0; i < values.length; i++ ) {
    if( values[i][0] === true ) {
      checkvalue = checkvalue + values[i][1];
    }
  }

変数checkvalueは、チェックされた列の商品名を格納する変数です。

2行目のfor文で取得した値の数だけ処理を繰り返すようにしています。

3行目のif文でvalues\[i\]\[0\]、つまりチェックボックスの値を判定。選択されていたらtrueを返すので、if( values\[i\]\[0\] === true )とします。

条件に当てはまる場合は、チェックボックスの横に並ぶ商品名(values\[i\]\[1\])をcheckvalueに格納します。

スプレッドシートにアラートを表示する

Browser.msgBox(checkvalue + 'が選択されました', );

こちらでスプレッドシートにアラートを表示させます。

構文は下記の通り。

Browser.msgBox(prompt);

promptにはString型が入ります。つまりは文字列ですね。

ちなみにこの形だと、OKのみの形ですが、OKとキャンセルを選択できるアラートも表示させることができます。

今回は省略しますが、詳細は下記をご覧ください。

Class Browser  |  Apps Script  |  Google DevelopersGoogle Developers

手順3:処理を実行するタイミングを設定する

次に先程書いた処理を実行するタイミングを設定していきます。

Apps Scriptを開いて、左画面から「トリガー」を選択します。

a2fc56feecf3e3e01b3f51f8ec6b5f46.jpg

開いたら画面右下の「トリガーを新規追加」でトリガーを作成します。

3cb2b25364323723fb84768e1cda22c3.jpg

作った関数「myfunction」を設定して、イベントの種類は「編集時」にセットします。

これでスプレッドシートを編集したときに処理が実行されるようになりました。

実行してみよう

それではスプレッドシートを開いて、適当にチェックボックスにチェックを入れてみます。

checkbox-1.gif

うまくいきましたでしょうか。

まとめ

というわけで、スプレッドシートのチェックボックスの値を判定して処理を実行する方法を解説しました。

ぜひ使いこなしてみては、

それではっ!