<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=445779107733115&amp;ev=PageView&amp;noscript=1">

Google Apps Script の書き方をわかりやすく解説

 2022.11.21  2023.03.28

みなさんは Google スプレッドシートを使っている時に「こんな機能があったらいいのにな〜」と思ったことはありませんか?その思いを、ぜひ実現してみましょう!

本稿では『Google Apps Script の書き方』について解説します。

Google Apps Script とは?

Google Apps Script(GAS)とは、少量のコードを書くだけで Google のサーバー上で動作させることができる、超お手軽な開発プラットフォームです。
必要なものは『Google Workspace アカウント(または 無償の Google アカウント)』と『ウェブブラウザー』のみです。追加料金は一切かかりません。

Google Workspaceの7つの特徴
Google Workspaceと無償版の違い

作ってみよう

それでは早速ですが、GASを作成する手順について説明していきます。
今回はスプレッドシートに次の機能を追加することを目指します。

Google Apps Script の書き方をわかりやすく解説-1

それでは実際に作っていきます。

スプレッドシートを作成する

まずはスプレッドシートを作成します。

スプレッドシートを作成するには、ブラウザで『Google ドライブ (drive.google.com)』を開き、[新規 > Google スプレッドシート] を選択します。
※あるいは、ブラウザーのアドレス欄に 『sheet.new』 を入力し、開くことでもスプレッドシートを作成できます。(もしログイン画面が表示されたら、Google アカウントでログインします)

Google Apps Script の書き方をわかりやすく解説-2

Google Apps Script の書き方をわかりやすく解説-3

新規スプレッドシートを作成できました。

それでは、タイトルを変更して、シートの中身を書き換えます。
ここではテーブル(表)のヘッダー行を追記して背景色や枠線を付けています。
あと、これは好みの問題ですが、見栄えをよくするために1行目と1列目を空行にしています。

Google Apps Script の書き方をわかりやすく解説-4

これでスプレッドシートの準備は整いました。

GASを作成する

次にGASを作成します。
GASを作成するには、スプレッドシートの画面上部にて [拡張機能 > Apps Script] を選択します。

Google Apps Script の書き方をわかりやすく解説-5

すると、GASのコード編集画面が開くので、下図の赤枠エリア内にコードを記述していきます。
なお、GASは [Ctrl + S] で保存できます。

Google Apps Script の書き方をわかりやすく解説-6

それでは、実際にGASをコーディングしていきます。

今回は大きく3つのブロックに分けて記述していきます。

▼ブロック1:変数の定義

Google Apps Script の書き方をわかりやすく解説-7

まず1つ目のブロックでは、スプレッドシート上の列番号を定義しておきます。
一見すると無駄なコードに見えるかもしれませんが、こうしておくことで後で列を追加や削除したり、列同士を入れ替えたりしたときにコードをほとんど変更せずに済むようになります。つまり後の仕様変更に強くなるので、スプレッドシートを扱う際にはオススメのコーディング方法です。

▼ブロック2:オープン時の処理

Google Apps Script の書き方をわかりやすく解説-8

次に2つ目のブロックでは、スプレッドシートを開いたときにカスタムメニューを追加する処理を記述します。
これにより、スプレッドシート上から直接GASの処理を実行できるようになります。

▼ブロック3:一括メール送信処理

Google Apps Script の書き方をわかりやすく解説-9

最後に3つ目のブロックではメインとなる一括メール送信処理を記述します。
処理内容としては、スプレッドシート上のデータを取得して、(データで指定された内容にて)メール送信処理を行います。
いくつかポイントがあるので順に説明します。

▼ポイント1:アクティブシートを取得

Google Apps Script の書き方をわかりやすく解説-10

今回はスプレッドシート上から実行するので、表示中のシートをアクティブシートとみなして「getActive...()」という関数を使用することで対象シートを取得できます。

ちなみに、GASにはバックグラウンドで実行する方法もありますが、その場合はこの「getActive...()」の関数を実行すると「アクティブシートが見つかりません」といった旨のエラーが出ることになるので注意が必要です。

▼ポイント2:シート上のデータを取得

Google Apps Script の書き方をわかりやすく解説-11

スプレッドシート上のデータを取得するには、「範囲を取得→範囲上のデータ配列を取得」という2段階の処理を行う必要があります。
ここでは一番左上セル(1行1列目)からデータが存在する一番右下セル(rows行columns列目)までを四角形の範囲として取得しています。
(ここではまだデータを取得していません。あくまで範囲を表すオブジェクトを取得しています)
具体的には、次の赤枠のような範囲を取得するイメージです。

Google Apps Script の書き方をわかりやすく解説-12

Google Apps Script の書き方をわかりやすく解説-13

次に、「getValues()」によってシート上のデータを2次元配列として取得します。
取得した2次元配列には次のようなイメージで格納されており、例えば "か" のデータを取得するには values[1][2] といった指定を行います。
※[]の中身は0始まりの番号で指定します。

Google Apps Script の書き方をわかりやすく解説-14

▼ポイント3:for文で繰り返し処理

Google Apps Script の書き方をわかりやすく解説-15

ここではfor文を使って繰り返し処理をしています。
3行目から順に1行ずつ進めてfor文内の処理を繰り返します。
また、配列の[]内は 0 始まりなので実際の行列番号から-1しています。

▼ポイント4:メール送信

Google Apps Script の書き方をわかりやすく解説-16

最後に、Gmail でメール送信処理を行います。
スプレッドシート上のデータから取得したパラメータ(宛先や本文など)を渡すことで、指定した内容でメール送信が行われます。
なお、sendEmail(...) は渡す引数が多いので初めて使う時は混乱するかもしれませんが、リファレンスに説明が詳しく書かれているので、しっかりと確認してからコーディングすれば大丈夫です。

ちなみに、コードを記述していくと sendEmail(...) に渡せる引数のリストが次のように表示されます。

Google Apps Script の書き方をわかりやすく解説-17

しかし、ここでは options の中身がよくわからないので何を指定すればよいのかわかりません。こういう時には次のリファレンスサイトを見にいくと options の中身に cc や bcc を指定できることがわかります。

Google Apps Script の書き方をわかりやすく解説-18

▼ポイント5:処理済みマークとスリープ処理

Google Apps Script の書き方をわかりやすく解説-19

メール送信処理を終えたら、送信済みの印としてチェックマーク "✔" をシートに追記します。
そして、Gmail の送信制限に引っかからないようにするためにスリープ処理(待機処理)を入れておきます。
※もし、このスリープ処理がない場合は、短時間のうちに大量にメール送信を行ってしまうと、Gmail アカウントがロックされてしまうこともあるので注意しましょう。

これでGASが全て完成しました。

▼完成系のGAS全文

Google Apps Script の書き方をわかりやすく解説-20Google Apps Script の書き方をわかりやすく解説-21

動作確認

動作確認の方法について説明します。

基本的には、下図のように『①関数を選択』して『②実行』すると選択した関数を実行でき、その後、実行ログが画面下に表示されます。

Google Apps Script の書き方をわかりやすく解説-22

しかし、今回のサンプルでは『アクティブシートを取得する処理』を含んでいるため、このやり方ではうまくいきません。(実行しても、アクティブシートが見つからないという旨のエラーが出ます)

そこで、次のようにスプレッドシートのカスタムメニューから実行することにします。ただし、処理が正常に進んでしまうと本当にメールが送信されてしまうので、宛先(Toなど)に使用するメールアドレスには注意しましょう。

Google Apps Script の書き方をわかりやすく解説-23

なお、初回実行時は次のような承認画面が表示されますが、画面に沿って進めていくことで承認が完了し、もう一度実行することでGASの実行を開始することができます。

▼初回の承認画面

Google Apps Script の書き方をわかりやすく解説-24

Google Apps Script の書き方をわかりやすく解説-25

Google Apps Script の書き方をわかりやすく解説-26

正常に実行が完了すると、次のように『送信済』列にチェックマークが付き、指定した宛先にメールが届きます。

▼実行後のシート

Google Apps Script の書き方をわかりやすく解説-27

▼届いたメール

Google Apps Script の書き方をわかりやすく解説-28

Google Workspace 事例
Google Workspace

GASについてもっと知ろう

GASのリファレンス

GASを書くには、まずどんな機能があるのかを調べる必要があります。そんな時にお世話になるのがGASのリファレンスサイトです。
それでは、GASのリファレンスの見方について説明します。

GASリファレンスサイトを開くと、GASで使える機能の一覧を確認できます。

Google Apps Script の書き方をわかりやすく解説-29

例えば、[Gmail > Gmailアプリ] の項目を開くと、Gmail 系のメソッド一覧を確認できます。各メソッドの説明文も書かれているので、これを見ながらどういう機能があるのかを確認できます。また、メソッド名をクリックすることで、メソッド内の引数の詳細を確認することもできます。

ログの出力と表示方法

GASを書いていると、実行途中のデータをログに出力して確認したい時があります。

ログを出力するには、Logger.log("message") という風に記述します。
変数の中身を出力するには、Logger.log("i = " + i) という風に記述します。
オブジェクトの中身を出力するには、Logger.log("obj = " + JSON.stringify(obj)) という風に記述します。

ログを表示するには画面左ペイン上の『実行数』をクリックします。

Google Apps Script の書き方をわかりやすく解説-30

また、エラーが発生した場合にもエラー内容がログに出力されます。
例えば、次のエラーログでは、エラーが『コード』ファイルの『77行目』の『11文字目』あたりで発生したことがわかります。

Google Apps Script の書き方をわかりやすく解説-31

GASでできることと、できないこと

GASはJavaScriptベースの言語ではありますが、JavaScriptとは異なる点が大きく2つあります。

  1. 標準のグローバル変数はほとんど使用できない。("window" など)
  2. Google Workspace系のサービス(Gmailなど)へアクセスする用のクラスが予め用意されている。

上記1については、例えば window.open(url) で新規画面でページを開いたり、あるいは window.location.href で現在URLを取得したりといったブラウザーに対する処理ができないことを意味しています。その理由としては、GASはサーバー上で動作しているので、クライアント上のブラウザー情報にアクセスできないことによります。

上記2については、例えば GmailApp.sendEmail(recipient, subject, body) と1行記述するだけで簡単にメール送信を行うことができます。
本来であれば標準のJavaScriptから Gmail 送信を行うには、次のように面倒な4ステップを踏む必要があります。

▼標準のJavaScriptからGmail送信する場合の手順

  • Gmail ライブラリを読み込む
  • 複雑な認証処理(≒ユーザーログインみたいなもの)
  • メール本文のエンコード処理
  • メール送信処理

しかし、GASではたった1行で済むのですごく簡単にできます。これはGASの大きな利点の1つです。

まとめ

いかがでしたか?本稿ではGASの開発手法について、ざっくりと説明しました。本稿を通して、少しでもGAS開発に興味を持っていただければ幸いです。

また、弊社ではGASの受託開発についても請負っておりますので、もしGAS開発について何かお悩みの際は、お気軽にご相談ください。

オンプレファイルサーバーからGoogleドライブへの移行はできる

RELATED POST関連記事


RECENT POST「Google Workspace」の最新記事


Google Workspace

今から使える! Google スライド基礎から応用まで

Google Workspace

Google Workspace(旧 G Suite)と Gmail の違いとは?

Google Workspace

Google Classroom のストリームへの問題投稿の対処法

Google Workspace

アーカイブやガバナンスのツール、Google Vault を知っていますか?

Google Apps Script の書き方をわかりやすく解説