【GAS超入門】データ型と演算

この記事では、GASの本格的な自動化の前に、まずはコンピュータが情報をどう扱っているかの「基本ルール」を学ぶ必要があります。それが今回解説する「データ型」と「演算」です。

難しく聞こえるかもしれませんが、これは「数字」と「文字」をどう区別するか、「足し算」や「引き算」をどう命令するか、というシンプルな決まりごとです。ここを押さえると、今後の学習がぐっと楽になります。

データ型について

データ型とは?

「データ型」とは、その言葉の通り「データの種類」のことです。

私たちは普段、「100」という数字と、「こんにちは」という文字を、意識せずに別のものとして認識しています。

GAS(プログラミング)でも、コンピュータに「これは数字です」「これは文字です」と正しく認識させる必要があります。

なぜなら、データの種類によって、できることが違うからです。 例えば、「数値」なら足し算や引き算ができますが、「文字列」(文字)に「掛け算」をすることはできません。

このように、GASが扱う情報の「分類」のことをデータ型と呼びます。

GASの主なデータ型

GAS(が利用するJavaScriptという言語)には、いくつかの基本的なデータ型があります。 初心者のうちに覚えておきたい、主なデータ型を順番に見ていきましょう。

数値型(Number)とは?

数値型は、その名の通り「数字」を扱うための型です。 GAS(JavaScript)では、10 のようなキリの良い「整数」も、3.14 のような「小数点以下の数(浮動小数点数)」も、区別なく同じ「数値型」として扱われます。

数値型の最大の特徴:計算ができる

数値型の最大の特徴は、足し算(+)や引き算(-)、掛け算(*)、割り算(/)などの「計算(演算)」ができることです。

そして、ここで最も重要なルールが一つあります。

それは、「数値型として扱う数字は、"' で囲まない」ということです。

もし "100" のように囲んでしまうと、それは「数値」ではなく「文字列(文字)」として扱われるため、意図した通りの計算ができなくなる場合があります。

console.log で数値の計算を試してみよう

console.log() を使って、数値型がどのように計算されるかを確認してみましょう。 以下のコードを function myFunction() { ... } の中に貼り付けて実行してみてください。

function myFunction() {
  
  // 1. 整数同士の計算
  console.log(100 + 50);

  // 2. 整数と小数点の計算
  // 消費税10%をかける計算 (1.1倍する)
  console.log(1000 * 1.1);

  // 3. 複雑な計算(計算の優先順位も算数と同じです)
  // (5 + 5) を先に計算してから 10 を掛けます
  console.log( (5 + 5) * 10 ); 

  // 4. (比較) もし数字を「文字列」として扱うと…
  console.log("100" + "50");

}
実行ログの確認

これを実行して「実行ログ」を見ると、以下のように表示されるはずです。

情報1  150
情報2  1100
情報3  100
情報4  10050

注目すべきは、4番目の結果です。

100 + 50 (数値型)は 150 と正しく計算されました。

しかし、"100" + "50" (文字列型)は、計算ではなく「文字の連結」として扱われ、「100という文字」と「50という文字」がくっついて 10050 という「文字列」になってしまいました。

このように、GASにスプレッドシートの数値を計算させるなど、意図した通りの計算をさせるためには、"' で囲まない「数値型」としてデータを扱うことが非常に重要です。

文字列型(String)とは?

文字列型とは、簡単に言えば「文字」のデータです。 「こんにちは」といった挨拶、「Google Apps Script」という名前、スプレッドシートの「A1」というセル番地など、コンピュータに「文字」として認識させたいデータは、すべてこの文字列型を使います。

文字列型の絶対的なルール:「引用符」で囲む

数値型と文字列型を区別する、最も重要で絶対的なルールがあります。 それは、文字列は必ず " (ダブルクォーテーション) または ' (シングルクォーテーション) で囲む、という決まりです。

100 は数値型ですが、"100" は文字列型です。 コンピュータはこれらを全く別のものとして認識します。

"' の使い分け

"' は、どちらを使っても構いません。 ただし、以下のように「文字列の中で、もう一方の引用符を使いたい」場合に便利です。

  • "Google's service" (シングルクォートの中でアポストロフィを使いたい)
  • "彼は 'こんにちは' と言った" (ダブルクォートの中でシングルクォートを使いたい)

どちらかで始めて、必ず同じもので閉じる、というルールさえ守れば大丈夫です。

文字列型の演算:「連結」

数値型は + を使うと「足し算」になりました。 文字列型で + を使うと、「文字列同士をくっつける(連結する)」という意味の処理になります。

console.log で文字列の「連結」を試してみよう

実際にコードを書いて、文字列の動作を確認しましょう。

function myFunction() {
  
  // 1. 基本的な文字列の連結
  console.log("Google" + "Apps" + "Script");

  // 2. 間にスペース(空白)を入れる
  // スペースも「空白という一文字」として扱います
  console.log("Google" + " " + "Apps" + " " + "Script");

  // 3. (重要) 数値の「計算」と文字列の「連結」の比較
  console.log(100 + 50);     // 150 (数値の計算)
  console.log("100" + "50");   // "10050" (文字列の連結)

  // 4. (超重要) 文字列と数値を + でつなぐとどうなるか
  // どちらか一方が文字列の場合、すべて「文字列の連結」が優先されます
  console.log("シート名:" + 1);
  console.log("A" + 10); // A10というセル番地を作る時などによく使います
  console.log(100 + "円");

}
実行ログの確認

これを実行して「実行ログ」を見ると、以下のように表示されます。

情報1  GoogleAppsScript
情報2  Google Apps Script
情報3  150
情報3  10050
情報4  シート名:1
情報4  A10
情報4  100円

3番目の比較で分かる通り、100 + 50 は計算されて 150 になりましたが、"100" + "50" は文字として連結され 10050 になりました。

そして4番目が非常に重要です。 "A" + 10 のように、文字列型と数値型を + でつなごうとすると、GAS(JavaScript)は「あ、これは連結だな」と判断し、数値の 10 を自動的に文字列の "10" に変換してから連結します。 その結果、"A10" という文字列が出来上がります。

これは、スプレッドシートの特定のセル(例:「A」列の「10」行目)を指定する際など、GASで自動処理を作る上で頻繁に使うテクニックです。

+ は、数値だけなら計算、文字が混ざれば連結」と覚えておきましょう。

論理値(Boolean)とは? 2択だけの特別なデータ

論理値とは、簡単に言えば「はい(Yes)」か「いいえ(No)」の2択だけを扱うための特別なデータ型です。

GAS(JavaScript)では、この2択を true(トゥルー:真・正しい)と false(フォールス:偽・間違い)という2つの専用の言葉で表します。

文字列型の "true" とは全く違い、truefalse"' で囲まずにそのまま書きます。これが論理値の大きな特徴です。

論理値は何に使うの?

初心者のうちは「truefalse なんて、何に使うの?」と疑問に思うかもしれません。

論理値は、プログラミングが「何かを判断する」ときに必ず使われます。 例えば、GASで自動化を行う際には、以下のような「判断」がたくさん発生します。

  • 「もし、A列の値が100以上だったら」 → B列に「OK」と入力する
  • 「もし、チェックボックスがオンになっていたら」 → メールを送信する
  • 「もし、今日の日付が月曜日だったら」 → 特定のシートをコピーする

この「もし、A列の値が100以上だったら」という問いかけ(条件)に対して、コンピュータが出す答えが true(はい、100以上です)または false(いいえ、100未満です)なのです。

論理値は、この後のステップで学ぶ「条件分岐」という処理の「判断材料」として、非常に重要な役割を果たします。

論理値が生まれる仕組み:「比較演算子」

では、truefalse はどうやって生まれるのでしょうか。 もちろん console.log(true) のように直接書くこともできますが、多くの場合、「比較」の結果として生まれます。

計算に使う +* を「算術演算子」と呼んだのに対し、「2つの値を比べる」ための記号を「比較演算子」と呼びます。

比較演算子を使った処理(比較演算)の結果は、数値にはならず、必ず truefalse のどちらかの論理値になります。

まずは、よく使う比較演算子を覚えましょう。

意味演算子結果
等しい==10 == 10true
等しくない!=10 != 5true
より大きい>10 > 5true
より小さい<10 < 5false
以上>=10 >= 10true
以下<=10 <= 5false

(注意点として、「等しい」を表す記号は = ではなく== と2つ重ねるルールがあります。これは非常に重要なので覚えておきましょう。)

console.log で論理値を試してみよう

実際にコードを書いて、比較演算の結果が論理値になることを確認してみましょう。

function myFunction() {
  
  // 1. 論理値をそのままログに出力する
  console.log(true);
  console.log(false);

  // 2. 数値の比較 (結果は true か false になる)
  console.log(10 > 5);    // 10は5より大きいですか? → はい(true)
  console.log(10 < 5);    // 10は5より小さいですか? → いいえ(false)
  console.log(100 == 100);  // 100と100は等しいですか? → はい(true)

  // 3. 文字列の比較
  console.log("GAS" == "GAS");     // この2つの文字列は等しいですか? → はい(true)
  console.log("GAS" == "Excel");   // この2つの文字列は等しいですか? → いいえ(false)
  console.log("A" != "B");       // AとBは等しくないですか? → はい(true)

  // 4. (比較) 文字列の"true"と論理値のtrueは別物
  console.log(true);       // 論理値
  console.log("true");     // 文字列

}

実行ログの確認

これを実行して「実行ログ」を見ると、以下のように表示されます。

情報  true
情報  false
情報  true
情報  false
情報  true
情報  true
情報  false
情報  true
情報  true
情報  true

このように、10 > 5 と書いた行は true と表示され、10 < 5 と書いた行は false と表示されているのが分かりますね。

今は「ふーん、truefalse という2択の答えがあるんだな」「>== を使うと、その答え(論理値)が得られるんだな」という点だけ理解しておけば完璧です。

null(ヌル)とは? 「何もない」ことを示す特別な値

「null」は、これまで学んだ数値や文字列とは大きく異なる、非常に特殊なデータ型です。

これは、プログラミングの世界において「(意図的に)値が存在しない」「空っぽである」という「状態」を示すための特別な値です。

「データがない」ことを示すためのデータ、と考えるとイメージしやすいかもしれません。

nullは何に使うの?

初心者のうちは、null を自分で積極的に使う場面は少ないかもしれません。しかし、GASが返す結果を理解したり、特定の状態を表現したりするために重要になります。

例えば、以下のような場面で登場します。

  1. 意図的に「空」を表現したい時 一度データ(例:数値の 100)を入れたものを、後から「リセットして空に戻したい」という場合などに、null を設定することがあります。
  2. 他のシステムとの連携(将来的に) GASが他のWebサービス(API)と通信した際、相手のサービスが「該当するデータはありませんでした」という意味で null を返してくることがあります。
null"" (空文字) や 0 の違い

ここで重要なのは、null は「空っぽの文字("")」とも「数字のゼロ(0)」とも明確に違う、ということです。

  • 0 は、「ゼロという数値」がちゃんと存在します。
  • "" は、「長さが0の文字」がちゃんと存在します。
  • null は、「そもそも、値そのものが存在しない」という状態を表します。

これらはすべて異なるデータとして区別されます。

undefined との違い

null と非常によく似たものに undefined(アンディファインド:未定義)があります。この2つはよく混同されますが、ニュアンスが異なります。

  • null: 開発者が「意図的に、ここには値がない」と設定した「空っぽ」の状態。
  • undefined: 「まだ何も設定されておらず、値が決まっていない」状態。

現時点では、「どちらも『何もない』状態を表すが、null は意図的な空、undefined は未設定、という違いがある」と覚えておけば十分です。

console.lognull を試してみよう

null がどのようなものか、他の「空」に見える値と比較しながらログに出力して確認してみましょう。

function myFunction() {
  
  // 1. nullをそのままログに出力する
  console.log(null);

  // 2. (比較) 空文字("")との違い
  // ログには何も表示されない(空白の行)ように見えます
  console.log("");

  // 3. (比較) 数字の0との違い
  console.log(0);

  // 4. (参考) null同士が等しいか比較する
  // 「値がない状態」と「値がない状態」は等しいですか? → はい(true)
  console.log(null == null);

  // 5. (参考) nullと空文字は等しくないか比較する
  console.log(null == ""); // → いいえ(false)

  // 6. (参考) nullと0は等しくないか比較する
  console.log(null == 0); // → いいえ(false)

}
実行ログの確認

これを実行すると、実行ログには以下のように表示されます。

情報1  null
情報2   
情報3  0
情報4  true
情報5  false
情報6  false

2番目の「空文字」の結果は、ログ上では何も表示されていない(空白の行)に見える点に注目してください。 nullnull という文字が表示されますが、"" は本当に何もない文字として表示されます。

null は、エラーの原因を探ったり、特定の状態(データが見つからなかったなど)を判定したりする際に使われます。「意図的な『無』を表す値」と覚えておきましょう。

undefined(アンディファインド)とは? 「未定義」を示す特別な値

「undefined」は、その名の通り「まだ定義されていない(決まっていない)」という「状態」を示す、GAS(JavaScript)の特別な値です。

前回のnullは、開発者が「意図的に、ここは空っぽ(null)です」と設定した状態でした。 それに対し、undefinedは「そもそも何も設定されておらず、手がつけられていない」状態を指します。

undefinedはどんな時に発生する?

初心者のうちは、undefinedに遭遇する場面はまだ少ないかもしれません。

このundefinedは、今後「変数」というデータを保存する箱を学ぶときに頻繁に登場します。 例えば、「箱(変数)は用意したけれど、まだ中に何も入れていない」という状態の時、その箱の中身は自動的にundefinedになります。

現時点では、nullが「意図的な空」であったのに対し、undefinedは「本当に何も設定されていない、未設定の状態」を表す言葉、と覚えておけば大丈夫です。

nullundefined の重要な関係

null(意図的な空)とundefined(未設定)は、意味合いは異なりますが、どちらも「値が存在しない」という点では似ています。

そのため、GAS(JavaScript)には少し変わったルールがあります。

==(等しい)という比較演算子でこの2つを比べると、「どちらも『無い』状態だね」と判断され、true(等しい)という結果が返ってきます。

console.logundefined を試してみよう

undefinedがどのような値か、特にnullとの比較に注目しながらログで確認してみましょう。

function myFunction() {
  
  // 1. undefinedをそのままログに出力する
  console.log(undefined);

  // 2. undefined同士を比較する
  console.log(undefined == undefined); // → はい(true)

  // 3. (超重要) undefined と null を比較する
  // 「==」で比較した場合、この2つは「等しい」と判定されます
  console.log(undefined == null); // → はい(true)

  // 4. (参考) 「===」という厳密な比較を使った場合
  // 「===」はデータ型も厳密に比較します
  // 「undefined型」と「null型」は違う型なので、「等しくない(false)」と判定されます
  console.log(undefined === null); // → いいえ(false)

}
実行ログの確認

これを実行すると、実行ログには以下のように表示されます。

情報1  undefined
情報2  true
情報3  true
情報4  false

3番目の undefined == nulltrue になっていることが確認できますね。

今は「==」と「===」の違いを完璧に理解する必要はありません。 まずは、「null(意図的な空)とundefined(未設定)という、2種類の『無い』状態があるんだな」「==で比べると、この2つは同じものとして扱われるんだな」という点だけ押さえておきましょう。

配列(Array)とは? データを順番に並べた「リスト」

数値や文字列は、1つのデータしか扱えませんでした。 しかし、スプレッドシートのA列の1行目から10行目まで、のように「複数のデータ」をまとめて扱いたい場面は非常に多いです。

そんな時に使うのが「配列」です。

配列とは、複数のデータを [] (角括弧) の中に入れ、カンマ , で区切って「順番に並べたリスト」のことです。

[1, 2, 3, 4, 5] ["りんご", "バナナ", "みかん"] ["A", 123, null, true] // 異なるデータ型も一緒に入れられます

配列の最大の特徴:「インデックス番号」で管理する

配列の最大の特徴は、格納されたデータが「インデックス番号」という「住所」のようなもので管理されている点です。

ここで、プログラミング特有の非常に重要なルールがあります。

それは、「インデックス番号は 0 から始まる」というルールです。

例えば、["りんご", "バナナ", "みかん"] という配列があった場合:

  • 0 番目のデータは "りんご"
  • 1 番目のデータは "バナナ"
  • 2 番目のデータは "みかん"

となります。「1番目」がインデックス 0 になる、という感覚に慣れることが重要です。

配列のデータを取り出す方法

配列から特定のデータを取り出すには、配列[インデックス番号] という書き方をします。

例えば list = ["りんご", "バナナ", "みかん"] という配列があったとして、 list[1] と指定すれば、"バナナ" を取り出すことができます。

console.log で配列を試してみよう

実際にコードを書いて、配列の作り方とデータの取り出し方を確認してみましょう。

function myFunction() {
  
  // 1. 3つの文字列が入った配列
  let fruits = ["りんご", "バナナ", "みかん"];

  // 2. 配列全体をログに出力してみる
  console.log(fruits);

  // 3. 配列から「0番目」のデータを取り出す
  // "りんご" が表示されます
  console.log(fruits[0]);

  // 4. 配列から「2番目」のデータを取り出す
  // "みかん" が表示されます
  console.log(fruits[2]);

  // 5. (参考) 配列の「長さ(個数)」を調べる
  // .length を使うと、データが何個入っているかを調べられます
  // この場合、3個なので 3 が表示されます
  console.log(fruits.length); 
}
実行ログの確認

これを実行すると、実行ログには以下のように表示されます。

情報2  [りんご, バナナ, みかん]
情報3  りんご
情報4  みかん
情報5  3

fruits[0]りんご が、fruits[2]みかん が取り出せていることが確認できますね。

なぜ配列が重要なのか?

GASでスプレッドシートを操作する際、例えば getValues() という命令(メソッド)を使うと、シートの複数セルの値は、必ずこの「配列」の形で取得されます。

例えば、A1セルからB2セルまでの4つのセルの値を取得すると、 [ ["A1", "B1"], ["A2", "B2"] ] という「配列の中に、さら配列が入った」二次元配列という形でデータが渡されます。

配列を理解することは、GASでスプレッドシートのデータを自由に読み書きするための第一歩です。 まずは「[] で囲んだリスト」「番号は 0 から始まる」という2点だけ、しっかり覚えておきましょう。

オブジェクト(Object)とは? 「ラベル付き」でデータを管理する箱

配列は、複数のデータを「順番(0, 1, 2…)」で管理するリストでした。 それに対し、「オブジェクト」は、データに「名前(ラベル)」を付けて管理する、いわば「名札付きのデータの集まり」です。

オブジェクトは {} (波括弧) を使って定義します。 そして、{ ラベル名: データ, ラベル名: データ } という形式で、データに名前を付けて格納します。

この「ラベル名」のことを、専門用語で「キー」または「プロパティ」と呼びます。

// 「個人情報」をオブジェクトで管理する例
{
  name: "Taro",
  age: 25,
  isStudent: true
}

この例では、"Taro" という文字列に name というラベルを、25 という数値に age というラベルを、true という論理値に isStudent というラベルを付けて、一つの {} の中にまとめています。

オブジェクトと配列の使い分け

配列(リスト)は、データに順番がある場合に適しています。 例:["りんご", "バナナ", "みかん"]

オブジェクトは、データに「意味」を持たせたい場合に適しています。 例:{ name: "Taro", age: 25 }["Taro", 25] という配列よりも、nameTaroage25 だ、と意味が明確になりますよね)

オブジェクトのデータを取り出す方法

オブジェクトから特定のデータを取り出すには、2つの方法があります。

  1. オブジェクト.ラベル名 (ドット記法)
  2. オブジェクト["ラベル名"] (ブラケット記法)

オブジェクト.ラベル名 (ドット記法) の方がシンプルでよく使われます。

// user という名前のオブジェクト
let user = { name: "Taro", age: 25 };

// 1. ドット記法で "Taro" を取り出す
console.log( user.name );

// 2. ブラケット記法で 25 を取り出す
console.log( user["age"] );
console.log でオブジェクトを試してみよう

実際にコードを書いて、オブジェクトの作り方とデータの取り出し方を確認してみましょう。

function myFunction() {
  
  // 1. 「商品」の情報をオブジェクトで作成
  let item = {
    productName: "リンゴ",
    price: 150,
    from: "青森県"
  };

  // 2. オブジェクト全体をログに出力してみる
  console.log(item);

  // 3. ドット記法で「商品名」を取り出す
  // "リンゴ" が表示されます
  console.log(item.productName);

  // 4. ドット記法で「価格」を取り出す
  // 150 が表示されます
  console.log(item.price);

  // 5. (参考) オブジェクトのデータを変更・追加する
  item.price = 200; // 価格を200円に変更
  item.isSoldout = false; // "isSoldout" という新しいキーとデータを追加
  
  // 変更・追加されたオブジェクト全体を確認
  console.log(item);
}

(※ let item = ... も「変数」という機能です。今はオブジェクトに名前を付けている、と理解してください。)

実行ログの確認

これを実行すると、実行ログには以下のように表示されます。

情報2  {productName=リンゴ, from=青森県, price=150}
情報3  リンゴ
情報4  150
情報5  {price=200, productName=リンゴ, from=青森県, isSoldout=false}

item.productNameリンゴ が取り出せていること、さらに5番目の処理で price200 に変更され、isSoldout が追加されているのが確認できますね。

オブジェクトは、GASがGoogleカレンダーの予定を扱う時や、Gmailの情報を扱う時など、さまざまな場面で「ラベル付きのデータ(プロパティ)」として登場します。

{} で囲む」「ラベル名: データ のセット」「オブジェクト.ラベル名 で取り出す」という3点を押さえておきましょう。

エスケープシーケンスとは?

文字列型を扱う上で、少し特殊なテクニックとして「エスケープシーケンス」というものがあります。

これは、通常の文字列ではそのまま入力・表現することが難しい「特別な文字」を扱うための書き方です。

例えば、文字列の中で「改行」を入れたい場合や、文字列を囲むために使っている " (ダブルクォーテーション) という記号そのものを「文字」として扱いたい場合があります。

そのような場合に、\ (バックスラッシュ、または円マーク) と特定の文字を組み合わせることで、「これは特別な意味ですよ」とGASに伝えることができます。

代表的なエスケープシーケンス

エスケープシーケンスには様々な種類がありますが、初心者の皆さんがまず覚えておくと便利なのは、以下のものです。

  • \n : 改行 これを使うと、ログやセル内などで文字列を改行させることができます。
  • \" : ダブルクォーテーション 文字列を " で囲んでいる時に、その文字列の「中身」として " を使いたい場合に使用します。
  • \' : シングルクォーテーション 文字列を ' で囲んでいる時に、その文字列の「中身」として ' を使いたい場合に使用します。
  • \\ : バックスラッシュ(円マーク) \ という記号そのものを文字として使いたい場合に使用します。(\ はエスケープシーケンスの開始記号なので、\ 自体もエスケープする必要があります)

画像にある \r (復帰) や \f (改ページ) なども存在しますが、GASでスプレッドシートやドキュメントを操作する上では、まずは \n (改行) と引用符のエスケープを覚えておけば十分です。

なぜ引用符のエスケープが必要か?

例えば、"彼は "すごい!" と言った" という文字列を作りたいとします。 しかし、GASは " が来た時点で「文字列の始まり(または終わり)」と認識するため、"彼は " の部分で一度文字列が終わり、すごい! という謎の命令が来たと勘違いしてエラーになってしまいます。

これを避けるため、"彼は \"すごい!\" と言った" と書きます。 こうすることで、\" の部分は「文字列の終わりではなく、ただの ” という文字ですよ」とGASに伝えることができます。

console.log でエスケープシーケンスを試してみよう

実際にコードを書いて、エスケープシーケンスの動作を確認してみましょう。

function myFunction() {
  
  // 1. \n を使った「改行」
  // ログで2行にわたって表示されます
  console.log("こんにちは。\nGASの世界へようこそ。");

  // 2. \" を使った「ダブルクォーテーション」の表示
  // "彼は "すごい!" と言った" と表示されます
  console.log("彼は \"すごい!\" と言った");

  // 3. (参考) シングルクォートの中でシングルクォートを使う
  // "It's a pen." と表示されます
  console.log('It\'s a pen.');

  // 4. (参考) 違う種類の引用符で囲めばエスケープは不要
  // この書き方でも "It's a pen." と表示されます
  console.log("It's a pen.");

  // 5. \\ を使った「バックスラッシュ」の表示
  // "C:\Program Files" のように表示されます
  console.log("C:\\Program Files");
}
実行ログの確認

これを実行すると、実行ログには以下のように表示されます。

情報1  こんにちは。
GASの世界へようこそ。
情報2  彼は "すごい!" と言った
情報3  It's a pen.
情報4  It's a pen.
情報5  C:\Program Files

ログを見ると、\n の部分でしっかり改行され、\"\' が文字として表示されているのが分かりますね。

特に \n (改行) は、スプレッドシートのセル内で改行を入れたい場合(setValue() を使う時など)にもそのまま使える、非常に便利なテクニックです。

コードに「メモ書き」を残す方法:コメントとは?

プログラミングを書いていると、「このコードは何のために書いたんだっけ?」「後でここを修正しよう」といった「メモ書き」を残したくなります。

そんな時に使うのが「コメント」機能です。

コメントとは、GAS(コンピュータ)がプログラムを実行する際に「完全に無視する」、人間のためのメモ書きです。 コメントを書いても、プログラムの実際の動作には一切影響を与えません。

コメントには、主に2つの重要な役割があります。

  1. コードが何をしているのか、将来の自分や他の人が読んでも分かるように説明を残す。
  2. 一時的にコードの一部を「無効化」して、動作をテストする(デバッグ)。

GASには、大きく分けて2種類のコメントの書き方があります。

1. 行コメント ( // )

// (スラッシュ2つ) を書くと、そこから右側の、その行の終わりまでが全てコメントとして扱われます。 1行だけの短いメモや、コードのすぐ右側に簡単な説明を加えたい場合に非常に便利です。

例: // これは1行コメントです。 console.log("これは実行されます"); // この部分はコメントなので無視されます。

2. ブロックコメント ( /* … */ )

/* (スラッシュとアスタリスク) で始まり、*/ (アスタリスクとスラッシュ) で終わる書き方です。 この /**/ で囲まれた範囲すべてが、複数行にわたっていても、まとめてコメントとして扱われます。

複数行にわたる詳しい説明を書きたい場合や、コードの広い範囲を一時的にまとめて無効化したい場合に便利です。

例:

/*
  ここはブロックコメントです。
  複数行にわたって
  メモを残すことができます。
*/

console.log でコメントの動作を確認しよう

console.log を使って、コメントが本当に「無視」されるのかを確認してみましょう。

function myFunction() {
  
  // 1. この行は実行されます
  console.log("A: このメッセージはログに表示されます。");

  // 2. 「行コメント」で無効化されたコード
  // 以下の行は // が付いているため実行されません
  // console.log("B: このメッセージは表示されません。");

  // 3. 「ブロックコメント」で無効化されたコード
  /*
    console.log("C: このメッセージも表示されません。");
    console.log("D: こちらも表示されません。");
  */

  // 4. この行は実行されます
  console.log("E: 処理が完了しました。");

}
実行ログの確認

これを実行して「実行ログ」を見ると、以下のように表示されます。

情報1  A: このメッセージはログに表示されます。
情報4  E: 処理が完了しました。

ログを見ると、///* */ で囲まれた console.log (B, C, D) は実行されず、ログに何も出力されていないことが分かりますね。

このように、コメントはプログラムの動作に影響を与えることなく、コードを分かりやすく管理するために非常に重要な機能です。 最初は面倒に感じるかもしれませんが、後からコードを見返したときに「あの時の自分、ありがとう!」と思えるように、簡単なメモでも残す習慣をつけておくことをお勧めします。

演算について

演算(えんざん)とは?

「データ型」で情報の種類について学んだ次は、それらのデータを使って「処理」を行う方法を学びましょう。この「処理」のことを「演算」と呼びます。

演算で一番わかりやすいのが、算数で行う「計算」です。 GASでは、計算などを行うときに、+- といった専用の記号を使います。この記号のことを「演算子」と呼びます。

演算子には、計算に使う「算術演算子」、値を比べる「比較演算子」(true false の記事で少し触れましたね)、条件を組み合わせる「論理演算子」などがありますが、今回はその基本となる「算術演算子」について詳しく解説します。

算術演算子とは?

算術演算子とは、一言でいえば「算数・数学の計算をするための記号」です。 足し算、引き算、掛け算、割り算など、私たちが日常的に使う計算をGASに命令するために使います。

GASで使われる主な算術演算子は以下の通りです。

加算(+)

「足し算」を行う演算子です。 これは直感的で分かりやすいですね。

  • 5 + 3 (整数同士の足し算)
  • 1.2 + 4.3 (小数点以下の足し算)
  • 10 + (-4) (負の数との足し算)

(復習) なお、この + 記号は、データ型が「文字列型」の場合は「連結」という意味になる、という重要なルールがありましたね。

減算(-)

「引き算」を行う演算子です。 これも算数と同じように使えます。

  • 5 - 3 (整数同士の引き算)
  • 1.2 - 4.3 (結果がマイナスになる小数点の引き算)
  • 10 - (-4) (負の数を引く=足し算になります)

乗算(*)

「掛け算」を行う演算子です。 ここで注意が必要です。算数の「×」記号ではなく、キーボードの「*」(アスタリスク)を使います。

  • 5 * 3 (5かける3)
  • 1.2 * 4.3 (小数点以下の掛け算)
  • 10 * (-4) (負の数との掛け算)

除算(/)

「割り算」を行う演算子です。 これも注意が必要で、算数の「÷」記号ではなく、キーボードの「/」(スラッシュ)を使います。

  • 5 / 3 (割り算)
  • 1.2 / 4.3 (小数点以下の割り算)
  • 10 / (-4) (負の数での割り算)

(補足) プログラミングでは、0 で割ることはできません。もし 10 / 0 のような計算を実行すると、結果は Infinity(無限大)という特別な値になります。

剰余(%)

「剰余(じょうよ)」は、あまり馴染みがないかもしれませんが、「割り算をした結果の『余り』だけを求める」演算子です。 記号は「%」(パーセント)を使いますが、パーセント計算(100分率)ではない点に注意してください。

  • 5 % 3 (5割る3は、商が1で、余りが 2 なので、結果は 2 になります)
  • 10 % 2 (10割る2は、商が5で、余りが 0 なので、結果は 0 になります)
  • 10 % 3 (10割る3は、商が3で、余りが 1 なので、結果は 1 になります)

これは、ある数値が「偶数」か「奇数」か(2 で割った余りが 0 かどうか)を判定するときなどによく使われます。

べき乗(**)

「べき乗」は、「同じ数を繰り返し掛ける」計算(累乗)を行う演算子です。 * を2つ続けます。

  • 2 ** 3 (「2の3乗」という意味。2 * 2 * 2 と同じで、結果は 8 になります)
  • 5 ** 2 (「5の2乗」という意味。5 * 5 と同じで、結果は 25 になります)
console.log で算術演算子を試してみよう

では、これらの計算を実際に console.log を使って実行してみましょう。

function myFunction() {
  
  // 1. 加算
  console.log("5 + 3 = " + (5 + 3) ); // 括弧で計算を先に実行させます

  // 2. 減算
  console.log("10 - (-4) = " + (10 - (-4)) );

  // 3. 乗算
  console.log("5 * 3 = " + (5 * 3) );

  // 4. 除算
  console.log("5 / 3 = " + (5 / 3) );

  // 5. 剰余(余り)
  console.log("10 % 3 = " + (10 % 3) ); // 10割る3の余りは 1

  // 6. べき乗
  console.log("2 ** 3 = " + (2 ** 3) ); // 2の3乗は 8

}
実行ログの確認

これを実行して「実行ログ」を見ると、以下のように表示されます。

情報1  5 + 3 = 8
情報2  10 - (-4) = 14
情報3  5 * 3 = 15
情報4  5 / 3 = 1.6666666666666667
情報5  10 % 3 = 1
情報6  2 ** 3 = 8

このように、GASで数値型と算術演算子を使えば、基本的な計算はすべて行えることがわかります。 特に、掛け算の * と割り算の / は、これからGASでスプレッドシートの値を計算する際などに頻繁に使うので、覚えておきましょう。

まとめ

お疲れ様でした。今回は、GASプログラミングの最も土台となる「データ型」と「演算」について詳しく学びました。

コンピュータが「数値」や「文字列」、「配列」や「オブジェクト」といった情報の種類をどう区別しているか、その基本が掴めたと思います。

また、+* といった計算(算術演算子)、+ による「文字列連結」、\n などの「エスケープシーケンス」、そしてメモ書きである「コメント」の使い方も確認しました。

一つ一つのルールはシンプルですが、これらはGASで自動化を行う上で必須の知識です。次に学んでいただきたいのは、今回学んだデータを保存しておくための、非常に重要な「変数」についてです。

Dチームメルマガ登録|eBOOK「逆引きAIツールブック」プレゼント中


AIやマーケティングに関する情報を不定期配信中
eBOOK「逆引きAIツールブック」プレゼント中です
↓ ↓ ↓

Dチームメルマガはこちら>>>