• ログインログイン
  • 新規登録新規登録

MENU

Google Apps Scriptでプログラミングを学ぶ 第3回

連載Google Apps Scriptでプログラミングを学ぶ

Google Apps Scriptは、開発環境の設定がなくてもすぐにコーディングができる優れもののサービスです。初心者でもすぐに取り掛かれる事例を用いながら、実践に耐えうるレベルまで徐々にステップアップして学習していきます。

この記事は、株式会社らしく様からの寄稿記事となります。前回までのプログラミング学習コラムに続き、今回は第3回目の勉強内容です。Google Apps Scriptの基本文法を学んでいきます。

GASの基本文法(初級編)

3章ではGASで「まず習得したい基本文法」を説明します。基本文法を理解できれば、かなりのことは実現可能です。プログラムの基本は「代入」、「条件分岐」、「ループ(繰り返し)」の 3つです。プログラミング言語が変わると書き方も少し変わりますが、この3つの基本 さえできていれば、どんな言語にも対応できます。

GASでは「条件分岐」や「ループ」の文法(表現方法)がいくつかありますが、この3つの基本を理解して使えるようになるために、3章で説明する文法は最小限にとどめてあります。その他の文法は6章の応用文法で説明します。応用文法は複雑な処理 をする場合に、「この文法を使った方が作りやすいよ」というものです。本章で説明する基本文法とGoogleスプレッドシートをうまく使えば、応用文法を使わずにプログラムを書くことも可能です。

セクション1 手順化

プログラムを作るには、やりたいことを手順化する必要があります。まず、Googleスプレッドシートでの手作業を手順として整理して、手順化するコツを養いましょう。

手作業を手順化

3章への扉で紹介した3つの基本(代入・条件分岐・ループ)を具体的に理解するために、次の例で考えてみましょう。

生徒のテストの点数をまとめています。 国語と算数のテストの合計点が基準点 (160点)より高い場合、C列のセルに「合格」という文字を入れる、という処理を1 行目から10行目まで行います。Googleスプレッドシートの関数を使えばすぐできてしまい ますが、これを手作業で行うことを考えましょう。

まず、この処理を手順化してみると、次のように書くことができます。
(1)160を合格の基準点として(頭の中に)記憶する。
(2)A列の値90を国語の点として記憶する。
(3)B列の値80を算数の点として記憶する。
(4)記憶している国語の点(90)と英語の点(80)を足した値(170)を、合計点として記憶する。
(5)記憶している合計点(170)が基準点(160)以上と判断する。
(6)C列に「合格」と記入する。
(7)次の行に対してを繰り返す。

この手順を3つの基本と対応させてみます。
(1),(2),(3),(4),(6) ➡ 代入
(5) ➡ 条件分岐
(7) ➡ ループ(繰り返し)

これをGASの文法に従って記述すれば、コンピュータが自動的に処理を行ってくれます。

ブログラムヘ変換  

実際に、本章で説明する規則に従って書いたプログラムが次のようなものです。文法はあとで説明しますが、ここではざっとながめてください。使われている単語は、比較的簡単な英語が多いと思います。

function acceptance() {

 // 現在選択されているシートをGASで使用可能にします。

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();

 /* 基準点を設定しています。
 10回以下の処理を繰り返します。
 国語、算数の点数を読み込んで、合計しています。
 */

 var point = 160;
 for (var i = 1; i <= 10; i++) {
 var language = sheet.getRange("A" + i).getValue();
 var mathematics = sheet.getRange("B" + i).getValue();
 var sum = language + mathematics;

 // 合計が基準点を超えている場合、シートに”合格"と書きます。

 if (sum >= point) {
 sheet.getRange("C" + i).setValue("合格");
  }
 }
}

セクション2 変数と代入

変数とは

皆さんは、日々の生活の中で、いろいろなことを記憶していると思います。しかし、いろんなことを記憶しても、その記憶した数字や文字がどういう概念を現しているのかわからなければ、記憶した意味がありません。そこで記憶するときは、

〇〇として記憶する

というように名前をつけますよね。私は毎朝、体重を量っていますが、体重という変数のラベルは同じでも、体重の中身つまり変数は毎日少しづつ変わります。また、セクション1の例題で利用した、基準点、国語、算数というのが変数です。

変数には、日本語も設定できるのですが、筆者は英語で変数を定義することをお勧めします。理由は、(今は想像できないかもしれませんが)将来的にあなたの書いたプログラムを海外の人も参照、変更する可能性があるからです。

変数には、日本語も設定できるのですが、筆者は英語で変数を定義することをお勧めします。理由は、(今は想像できないかもしれませんが)将来的にあなたの書いたプログラムを海外の人も参照、変更する可能性があるからです。今は、Google翻訳など、簡単便利な翻訳サービスがありますので、それほど敷居は高くないと思います。

代入とは

代入とは、変数やセルに値を入れることです。コンピュータの世界をイメージすると、変数のメモリ(記憶)領域に変更を加えるということになります。この代入にはルールがあります。

【ポイント】

  • 代入には=(イコール)を使う。
  • 右辺から左辺に代入させる

「基準点=160」という記述は、右辺の160という数字を左辺の基準点という変数に代入しています。「左辺=右辺」は、「左辺は右辺」と覚えておきましょう。

セクション3 条件分岐

引き続き成績表の合格判定するプログラムを例にとって、3つの基本文法の2つ

条件分岐とは、ある条件を満たしているか否かに基づき、処理を複数に分岐するというものです。簡単に言うと、「もし~~という場合、○○という処理を行う」といった場合分けをプログラムにお願いしたいときに使う文法です。日常生活での条件分岐を例に挙げると、次のようなものも条件分岐です。目となる条件分岐の考え方と使い方を習得しましょう。

  • 「もしお肉が食べたい場合、焼肉屋に行こう。お魚が食べたい場合、すし屋にしよう。」
  • 「もしお財布に1万円あったら、お洋服を買おう。なかったら、我慢しよう。」

このような、普段無意識に行っている条件分岐を、コンピュータでも分かるように書いてあげるための基本文法が”if文”です。

【書式】

if(判定される条件) {
処理
}

“if”とは英語で「もし~ならば」を指します。この“if”の後の(括弧)の中に判定する条件「~~ならば」を書き、続いて{括弧}の中に「○○する」という処理を書きます。

成績表の合格判定プログラムでいうと、if以下の部分です。

function acceptance() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();

var point = 160;
 for (var i = 1; i <= 10; i++) {
 var language = sheet.getRange("A" + i).getValue();
 var mathematics = sheet.getRange("B" + i).getValue();
 var sum = language + mathematics;

/*
* 変数sumの値(国語と算数の合計点)が基準点160以上場合、
* C列 i 行目のセルに“合格”と記入する。
*/

if (sum >= point) {
 sheet.getRange("C" + i).setValue("合格");
  }
 }
}

if文には、条件や分岐の数に応じて書き方のパターンが3つあります。

セクション4 繰り返し

セクション4では、3つの基本文法の3つ目【繰り返し】について学びます。引き続き成績表の合格判定するプログラムを例にとって、3つの基本文法の最後、繰り返しの考え方と使い方を習得しましょう。

繰り返しとは、ある条件を満たしている間は特定の処理を繰り返し行うというものです。
簡単に言うと、「~~である間は、○○という処理を繰り返す」という文字通り繰り返し行う処理をプログラムにお願いしたいときに使う文法です。

「10数えるまで、お風呂に浸かっていよう。」
「子供が20歳未満の間は、毎年お小遣いをあげよう。」

これも、日常生活でよくありがちな繰り返しのケースですね。コンピュータにこのような繰り返しの処理をお願いしたい場合に便利な基本文法が「For文」です。書き方は、以下のようになります。

【書式】

for(判定される条件) {
処理
}

“for”の後の()の中に、繰り返しの処理を行う条件「判定される条件」を書き、続いて{ }の中に、繰り返したい処理を書きます。このfor文とは切っても切り離せないのが「カウンタ変数」です。カウンタ変数とは、for文の条件に「5回繰り返す」「10まで数える」など数を用いるときに、「今何回目か」「幾つまで数えたか」を把握するために使う変数です。一般的に“i”という変数を使用することが多いです。(iは、英語のindexから由来しているようです。)

カウンタ変数の使い方は例えばこんな感じです。

【書式】

for(var  i =【開始時の数】  ;  i <=【終了時の数】  ;  i++)

 

i++とは、for文内の処理を行う毎に、変数iに1を加算するという意です。
iが1から開始した場合、1,2,3・・・と変数iの値を増やすことでカウントされます。

では、先ほどの成績表の合格判定プログラムの中で、使い方を見てみましょう。
for (var i = 1;i <=10;i++){以下の箇所です。

function acceptance() {
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();

 var point = 160;

/* 変数iは1から開始する。
* 変数iが10以下の場合、後続の{ }内の処理を行う。
* 変数iに1を加算して繰り返す。
*/

 for (var i = 1; i <= 10; i++) {
 var language = sheet.getRange("A" + i).getValue();

 var mathematics = sheet.getRange("B" + i).getValue();

 var sum = language + mathematics;
 if (sum >= point) {
 sheet.getRange("C" + i).setValue("合格");
  }
 }
}

例題のプログラムがどのように動くか、図を用いて追いかけてみましょう。

セクション5 演算

セクション5では、演算について学びます。演算とは、簡単に言い換えると計算のことです。実はこの演算、これまでの章の中でも既に何度か登場しています。ここでいま一度整理してみましょう。

演算とは、演算子と呼ばれる記号・符号を用いてプログラムに計算したり、比較したりしてもらうことです。小学校で習う算数のようなものだと理解して頂くと良いですね。最も身近な例ですと、「+」や「-」などの記号(=演算子)を使って足したり引いたりすること、これが演算です。

プログラムに演算してもらう際に使う演算子には、大きく分けて3つの種類があります。

  1. 算術演算子
  2. 比較演算子
  3. 論理演算子

それぞれの概要と種類を覚えて、上手に使い分けられるようになりましょう。

1.算術演算子

いわゆる四則演算(足し算・引き算・掛け算・割り算)するための演算子です。

2.比較演算子

数字の大小を比較するための演算子です。

3.論理演算子

ある演算とある演算を組み合わせて使う場合に用いる演算子

補足説明

trueとfalseはboolean型と呼ばれる値で、trueとfalseのどちらかの値しか持ちません。
trueとfalseは”成功/失敗”とか”YES/NO”といった2種類の値を表すときによく使われます。

比較演算子と論理演算子は、本コラムのセクション2で学んだ”if文”やセクション3で学んだ”for文”などの(括弧)の中に条件判定を書く際によく使います。

 

以上で今回は終了です。次回は、今回の基本文法を踏まえた応用編に入ります。

株式会社らしくのインターン応募はこちら

オススメ記事一覧

もっと見る
完全無料!

1で登録完了!

エンジニアの仕事・年収や選考ノウハウ記事が読めるほか、
会員にはプログラミング講習やES・面接対策などリアルな無料サポートも充実。
ここだけの求人情報も多数。

今すぐ新規会員登録
Page Top