【Google Apps Script 入門講座-03】GAS(JavaScript)の理解を深めよう!

今回は前回実装した、Googleフォームの自動返信機能のコードを詳しく確認しながら、よりGASの理解を深めていきましょう!

以前お伝えした通り、GASはJavaScriptがベースになっています。

そのため、コードをしっかり読み解くためには、JavaScriptの基本的な書き方やルールを理解しておくことがとても大切です。

今回は、GASを使いこなすための第一歩として「オブジェクト・プロパティ・メソッド」といった JavaScriptの基礎的な概念を一緒に深掘りしていきます!

ちょっと難しく感じるかもしれませんが、具体例を交えながらわかりやすく解説していくので、安心して読み進めてくださいね。

前回実装したコード

function sendAutoReply(e) {
  const responses = e.values;
  const name = responses[1];  // 2列目:お名前
  const email = responses[2]; // 3列目:メールアドレス
  const message = responses[3]; // 4列目:お問い合わせ内容

  const subject = "お問い合わせありがとうございます";
  const body = "${name}様\n\nこのたびはお問い合わせいただきありがとうございました。\n以下の内容で承りました:\n「${message}」\n\n担当より折り返しご連絡いたします。";

  GmailApp.sendEmail(email, subject, body);
}
目次

オブジェクト

コードを読み解く前に、まずは「オブジェクト」というGASにおけるとても重要な考え方を押さえておきましょう。

オブジェクトとは、「キー」と「値」のセットでデータを管理できる入れ物のことです。

例えば、

const user = {
  name: "佐藤",
  email: "sato@example.com"
};

このようにuserを定義した場合、name(キー)に対する値が”佐藤”、email(キー)に対する値が”sato@example.com”であるオブジェクトとなります。

オブジェクトの値には、上記のような文字列だけでなく、関数やさらにオブジェクトが入ることもあります!

イベントオブジェクト

ではコードの1行目から確認していきましょう。

function sendAutoReply(e) {

sendAutoReplyという関数名を定義するはじまりのコードですが、引数が指定されています。

引数とは「どこに・なにをするか」という目的語的な情報をメソッドや関数に伝える役割でしたね。

今回、引数にはeという文字が渡されていますね。

この e は、Googleフォームの送信トリガーが動いたときに、自動的に渡される「イベントオブジェクト」です!

この中には、送信されたフォームの回答データや、送信元の情報などがまとまって格納されています。

Googleフォームのイベントオブジェクトの中身の例

キー
values回答内容が順番に格納されている
range回答が書き込まれた行

つまりこの関数は、このようなイベントオブジェクトのデータを引数として実行する関数であることがわかりますね!

プロパティ

では続いて2行目の部分です。

  const responses = e.values;

e.valuesを変数responsesに格納していそうだな」と感じれらたらナイスです!

まさしく上記ではイベントオブジェクトのもつvalues(キー)の値を変数に格納しています。

このドットでつなぐ書き方、どこかに見覚えありませんか?

デイトラちゃん

○○○.XXX()という記述がでてきたらメソッドだったよね…?

たしかに○○○.XXX() のようなメソッドの形と似ていますが、実はe.values のように () がつかないものをプロパティと呼びます!

正確には、オブジェクトの中にあるすべての値は「プロパティ」であり、その中で値が関数(function〜)の場合にそのプロパティを「メソッド(関数プロパティ)」と呼びます!

人をオブジェクトとして例にすると、このようなイメージです👇️

キー種類
name“たろう”プロパティ
age25プロパティ
greetfunction{
console.log(“こんにちは”);
}
メソッド

オブジェクトのもつ情報を「プロパティ」、オブジェクトができる動作的なものを「メソッド」と覚えるとイメージしやすいですね!

オブジェクト.キーで取得できる情報 → プロパティ
オブジェクト.キー()で実行できる動作や処理 → メソッド

つまり2行目のコードは、イベントオブジェクトからフォームの回答が入っているvaluesのプロパティをresponsesに代入しているのがわかりますね!

  const responses = e.values;

データ型

ここでまた、GAS(JavaScript)の基本を確認しておきましょう!

これまで、“こんにちは、GAS!”のような「文字」のデータや、「オブジェクト」のようなキーと値がセットになったデータなど、すでに色々なデータに触れてきました。

プログラミングではこれらのデータがどんな種類のデータなのか明確に決められていて、このデータの種類を「データ型」と呼びます。

以下のようなデータ型が、GAS(JavaScript)ではよく使われます👇

スクロールできます
データ型説明
“こんにちは”文字列(String)文字のまとまり。「””」や「”」で囲う
123数値(Number)数字、計算に使える
true / false真偽値(Boolean)「はい」か「いいえ」の2択の情報
[“A”, “B”, “C”]配列(Array)複数の値を順番に並べたリスト
{name: “佐藤”, age: 25}オブジェクト(Object)キーと値のセット

配列

ここで、もう一度2行目のコードを確認してみましょう!

  const responses = e.values;

e.valuesはフォームの回答が順に入っているプロパティでしたね。

前回実装したフォームの項目は「お名前・メールアドレス・問い合わせ内容」だったので、このe.valuesには、以下のような値が入ることが想定されます。

["2025/05/28 15:52:37", "たろう", "XXX@example.com", "くわしく話しを聞きたい"]
// values の最初にはデフォルトでタイムスタンプが入る仕様

このような複数の値がリスト化されているデータ型を「配列」と呼びます!

配列は、[X(数値)]と続けて記述することでX番目に格納されているデータを取得できます。

配列は順番を0から数え始めます!([0]と書くと、その配列の一番最初の値を取得します。)

つまり、const responses = e.values;に続く以下のコードは、

  const name = responses[1];  // 2列目:お名前
  const email = responses[2]; // 3列目:メールアドレス
  const message = responses[3]; // 4列目:お問い合わせ内容
  • responses[1]→responses配列に格納された2番目の値
  • responses[2]→responses配列に格納された3番目の値
  • responses[3]→responses配列に格納された4番目の値

それぞれ配列から値を取得して、変数に代入していることがわかりますね!(※valuesの中身がそのまま入っているので配列の1番目にはタイムスタンプが入っています)

前回フォームを作成してもらった際に「項目の順番は変えないように」とお伝えしましたが、これは順番が変わってしまい、代入される値が変わってきてしまうためです。

このまま順番で管理すると「何番目がどのデータだっけ??」となってしまうので、中身を示す名前の変数に代入して使いやすくしています

GAS(JavaScript)の記述方法について

今までコードの貼り付けで対応していたので細かく確認していなかったですが、JavaScriptの基本的な記述方法についてここで改めて確認していきましょう!

コメントアウト

コメントアウトとは、コードの中にメモや説明を書き込むための方法です。コメントアウトされた部分はプログラムとしては実行されず、無視されます。

以下のような目的でコメントアウトは利用されます!

  • 他人が見て理解しやすくする
  • コードの意図を説明する
  • あとで使うコードを一時的に無効化する

GAS(JavaScript)では2種類のコメントアウトの方法があります。

① 行コメント(1行のみ)

  const name = responses[1];  // 2列目:お名前
  • //と記述すると、その後ろがコメントアウトされます。
  • 説明などによく使う書き方で、読みやすさアップに役立ちます。

② ブロックコメント(複数行)

/*
  ここではフォームの値から
  名前・メールアドレス・お問い合わせ内容を
  個別に取り出して変数に代入しています。
*/
const name = responses[2];
  • /**/の間にある複数行はすべてコメントになります。

文字列

  const name = "これは文字情報です"

データ型の種類でも触れましたが、文字情報として扱う「文字列」というデータ型があります。

文字列は、ダブルクォーテーション(”)またはシングルクォーテーション(’)で囲んで表現します。

どちらでも動作は同じですが、プロジェクト内ではどちらかに統一するのが一般的です!

数字との違い

見た目が同じでも、囲ってあるかどうかでデータの意味が大きく変わることに注意しましょう!

const age1 = 20;         // 数値(Number)
const age2 = "20";       // 文字列(String)
  • 20 → 計算に使える「数字」
  • “20” → 「文字」としての”2″と”0″の組み合わせ
const result1 = 20 + 5;  // 25(数値の足し算)
const result2 = "20 + 5";  // "20 + 5"(文字列としてそのまま出力される)

このように、同じように見える値でも、データ型が違えば結果が変わってくるのがJavaScriptの特徴です。

テンプレートリテラル

テンプレートリテラルとは、文字列の中に変数を埋め込んだり、改行を含めたりできる記法です。

JavaScriptでは、バッククォート` で囲むことでテンプレートリテラルを使えます。

シングルクォーテーションと似ているので注意してください!

テンプレートリテラルでは、例えば${変数名} のように書くと、その変数の中身が文字列内に展開されます。

const name = "たろう";
const message = `こんにちは、${name}さん!`; //こんにちは、たろうさん!

またテンプレートリテラルのもう一つの強みは「改行が書きやすい」ことです。

通常の文字列(” “‘ ‘)では \n を使わないと改行できませんが、テンプレートリテラルなら そのまま改行してOK です。

GmailApp.sendEmail メソッド

では最後のメール送信部分のコードについてです!

  GmailApp.sendEmail(email, subject, body);

GmailApp.sendEmail() は、GASから Gmail を使ってメールを送信できるメソッドです。

以前確認したSpreadsheetApp.getActiveSpreadsheet()のような、GASの「組み込みオブジェクト」のメソッドのひとつです!

宛先(メールアドレス)・件名・本文を引数に、メール送信を実装しています!

まとめ

今回は、GASの中身を読み解くために欠かせない「JavaScriptの基本ルール」についてじっくり学びました。

  • オブジェクトとは何か
  • プロパティとメソッドの違い
  • 配列の扱い方
  • 文字列やテンプレートリテラルの書き方

など、コードの“中身”に目を向けていくと、「ただ動かす」から「意味がわかる」へと一歩進んだ感覚がつかめたのではないでしょうか?

GASは「身近なGoogleサービスをちょっと便利にする」ためのツールですが、裏側ではこうしたJavaScriptの基本がしっかりと使われています。

“できた!”をさらに積み重ねて、自分の仕事や日常に活かせる力を育てていきましょう💪✨

目次