Googleスプレッドシートを自動化するGoogle Apps Script(GAS)の始め方Tech TIPS

Googleスプレッドシートには、Microsoft Excelのマクロのような機能拡張機能として「Google Apps Script(GAS)」が提供されている。JavaScriptやHTML、CSSといったWeb言語をベースとしており、これを使うことでGmailと連携させることなども可能だ。Googleスプレッドシートで、このGASを使い始める方法を紹介しよう。

» 2024年08月16日 05時00分 公開
[小林章彦デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象:Googleスプレッドシート


Google Apps Scriptを使うには Google Apps Scriptを使うには
Googleスプレッドシートには、Microsoft Excelのマクロのような機能拡張機能としてJavaScriptやHTML、CSSといったWeb言語をベースとする「Google Apps Script(GAS)」が提供されている。GASを利用することで、関数では実現が難しい処理などが可能になる。また、Gmailと連携させることなどもできる。

 「Microsoft Excel(エクセル)」では、マクロを使うことで、機能を拡張したり、自動処理が行えたり、新たにワークシートで使える関数などを作ることができたりする。「Googleスプレッドシート」の場合、JavaScriptやHTML、CSSといったWeb言語をベースとするスクリプト言語「Google Apps Script(GAS)」が用意されている(Googleスプレッドシートだけでなく、GmailやGoogleカレンダーなどのGoogleが提供するサービスで利用可能)。

 GASを使うことで、処理の自動化やGoogleスプレッドシート上の関数だけでは実現が難しい処理が可能になる。例えば、Googleスプレッドシートでメールアドレスと個別のメール本文の一覧を用意しておき、Gmailで自動送信するといったことができる。

 ただ、JavaScriptをベースとしているため、JavaScriptになじみがなかったり、プログラミングが苦手だったりする場合には、少々ハードルが高い。それでも、簡単な処理であれば、インターネット検索でGASのサンプルが見つかるし、最近では生成AI(人工知能)を使ってGASを出力してもらうことも可能だ。

 目的のGASが手に入っても、Googleスプレッドシートでどう設定するのか分からないと使えない。そこで、本Tech TIPSでは、GoogleスプレッドシートでGASを使い始めるための方法を紹介しよう。

Apps Scriptの使い方

 まずはGASに適用するスクリプトを用意しよう。前述の通り、インターネット検索で探してもいいし、生成AIを使って作成してもよい。最初は、あまり複雑でないもので試してみるのがいいだろう。

 ここでは、Microsoft Copilotを使って、「B3」「C3」「D3」セルに挿入したチェックボックスを連動させ、3つのチェックボックスのうち、1つのセルしかチェックが入らないようにするスクリプト(ラジオボタンと同様の機能)を生成させてみた。アンケートの性別で、「男性」「女性」「回答しない」の3つから選択させるような用途を想定している。なおチェックボックスが挿入されているセルは固定で、汎用(はんよう)性はない点に注意してほしい。

 Microsoft Copilotを起動し、入力ボックスに「Googleスプレッドシートに関するスクリプトを記述してください。B3、C3、D3の3つのセルにチェックボックスが挿入されています。この3つのうち、1つをチェックすると、他のチェックボックスにチェックが入っている場合はそのチェックを外すGoogle Apps Scriptを書いてください。」と入力して、スクリプトを出力した。

 出力されたスクリプトは、以下の通りだ。ここでは、あくまでGASの使い方を紹介する目的なので、このスクリプトの評価や解説はしない。

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var row = range.getRow();
  var col = range.getColumn();

  // チェックボックスがある行と列を確認
  if (row === 3 && (col === 2 || col === 3 || col === 4)) {
    var value = range.getValue();
    
    // チェックが入った場合
    if (value === true) {
      // 他のチェックボックスのチェックを外す
      if (col !== 2) sheet.getRange("B3").setValue(false);
      if (col !== 3) sheet.getRange("C3").setValue(false);
      if (col !== 4) sheet.getRange("D3").setValue(false);
    }
  }
}

3つのチェックボックスのうち1つしかチェックできないようにするスクリプト
Microsoft Copilotを使って出力させたスクリプトをそのまま掲載している。そのため、コードが完全に正しいものなのかどうかは検証していない点に注意してほしい。

 スクリプトが用意できたら、これをGoogleスプレッドシートに反映させる。WebブラウザでGoogleスプレッドシートを開き、「B3」「C3」「D3」セルにチェックボックスを挿入しておく。Googleスプレッドシートにチェックボックスを挿入する方法は、Tech TIPS「チェックボックスを作成する【Googleスプレッドシート】」を参照してほしい。

 チェックボックスを挿入したら、メニューの[拡張機能]−[Apps Script]を選択する。新しいタブで「無題のプロジェクト」が開くはずだ。プロジェクトタイトルは、ページ上部の「無題のプロジェクト」をクリックすると変更できる。

 左側のメニューで[ファイル]−[コード.gs]を選択し、右ペインの「function myFunction(){」と「}」の間にスクリプトを入力していく。GASを使って関数を作成する場合、「myFunction()」ではなく、「addFunction()」といったようにすると、「addFunction」という関数が作成できる。

 ただ、上記のスクリプトでは、「myFunction()」の代わりに「onEdit(e)」という関数名が定義されているので、「function onEdit(e) {」から「}」までの全体をコピーして、「function myFunction(){」と「}」の間ではなく、「function myFunction(){」と「}」を置き換える。

 右ペイン上部のツールバーにある[プロジェクトを保存]ボタン(フロッピーディスクを模したアイコン)をクリックして一応保存(保存しなくても実行は可能)しておき、[実行]ボタンをクリックすると、スクリプトが実行される。

 生成AIが作成したスクリプトによっては、右ペイン下側の「実行ログ」欄にエラーが表示されることがあるが、「お知らせ 実行開始」と表示されていたら、動作を確認してみよう。チェックボックスを挿入したGoogleスプレッドシートのタブに戻り、チェックボックスにチェックを入れた後、別のチェックボックスをチェックしてみよう。少し切り替わるのが遅いが、別のチェックボックスをチェックすると、前にチェックしたチェックボックスのチェックが外れるはずだ。

 もし、うまく動作しないようならば、生成AIに条件をより詳しく説明した文章を入力して、再出力してみるとよいだろう。

 保存したGASは、次回、チェックボックスを挿入したスプレッドシートを開くと読み込まれるので、改めてGASを入力しなくても同じように動作する。

Apps Scriptの使い方(1) Apps Scriptの使い方(1)
スクリプトを用意する。ここではMicrosoft Copilotを利用してスクリプトを生成しているが、自分で最初からスクリプトを書くのであれば、この作業は不要だ。
Apps Scriptの使い方(2) Apps Scriptの使い方(2)
Googleスプレッドシートを開く。今回の例では、3つのチェックボックスのうち、1つをチェックすると、別のチェックボックスのチェックが外れるというものなので、「B3」から「D3」セルにチェックボックスを挿入する。
Apps Scriptの使い方(3) Apps Scriptの使い方(3)
[機能拡張]メニューを開き、[Apps Script]を選択する。
Apps Scriptの使い方(4) Apps Scriptの使い方(4)
新しいタブでApps Scriptのエディタが開く。ここで[コード.gs]を選択する。
Apps Scriptの使い方(5) Apps Scriptの使い方(5)
右ペインにMicrosoft Copilotで生成したスクリプトを貼り付ける。
Apps Scriptの使い方(6) Apps Scriptの使い方(6)
[実行]ボタンをクリックする。ここでは「実行ログ」にエラーが表示されているが、ここではこのエラーについては触れない。
Apps Scriptの使い方(7) Apps Scriptの使い方(7)
チェックボックスを挿入したスプレッドシートに戻り、3つのチェックボックスのうち、1つのチェックを入れる。
Apps Scriptの使い方(8) Apps Scriptの使い方(8)
別のチェックボックスをチェックすると、前のチェックボックスに入れたチェックが自動的に外れる。スクリプトは機能しているようだ。

 なおコード名は、「コード.gs」にマウスホバーすると表示される[︙]アイコンをクリックして、[名前の変更]を選択すると、任意のコード名に変更可能だ。

スクリプト名を変更する(1) スクリプト名を変更する(1)
Apps Scriptのエディタの「コード.gs」にマウスホバーすると表示される[︙]アイコンをクリックして、[名前の変更]を選択する。
スクリプト名を変更する(2) スクリプト名を変更する(2)
「コード.gs」部分が編集可能になるので、適当な名前(ここでは関数名のonEdit)に変更する。

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。