便利なGASレシピ集!に戻る場合は以下から
はじめに
今回のビジボットでは、前回の『GASの初心者レッスン』よりさらに初心者向けの記事を書いていきます!
しかし、それ以前に私はGASの本を一度も読んだことがなく基礎知識も独学すぎてまだできることも多くないので、この機会にしっかりと学習したいと思い買ってしっかりと学んだことをアウトプットしていきます!
それでは早速始めていきます!
1.GASの超基本
GASを利用するにあたり、最低限覚えておいたほうがいい使用上のルールがあります。
無料のGoogleアカウントの実行時間は6分 / 実行で、スクリプトの実行の際にこの制限を越えると、スクリプトはエラーとなって終了しちゃいます。
なので扱うデータ量が多かったり、処理速度を意識しないといけません!(笑)
ただ、6分の壁を越える処理を記述する方法もあるようなので、今後やってみたいなぁーと思ってます。
1. | 英数字、記号は全て半角で入力 |
2. | アルファベットの大文字と小文字は区別される |
3. | 初めて実行するスクリプトは都度『承認』が必要 |
4. | ステートメント *1 の末尾にはセミコロン(;)を付ける |
5. | 識別子 *2 は先頭文字は数字、一部アンダースコア、ドル記号($)をのぞいて記号は使えない |
6. | 予約語 *3 は使えない |
7. | 変数と関数名にはキャメル記法 *4、定数名にはスネーク記法 *5を使用 |
*1 ステートメント…処理の最小単位の事
セミコロンがなくても自動でステートメントを判断して処理されるけど、絶対ではないので非推奨です!
*2 識別子…変数、定数、関数などの事
*3 予約語…すでに特別な意味を持つ単語として定められているものの事(var や function など)
*4 キャメル記法…単語を連結した時に、2つ目以降の単語の頭文字を大文字にする記法(maxRow など)
*5 スネーク記法…単語をアンダースコア(_)で連結しつつ全てを大文字にする記法(TAX_RATE など)
2.記述準備
『ツール』の中にある『スクリプト エディタ』を選択します。

スクリプトエディタ画面が表示されます。

3.変数と定数
スクリプト上で実行する為に必要な数値、文字列、オブジェクトなどのデータを格納する『データの箱』のことです。変数を使うことで、データを一時的に保管したり、データをわかりやすい名称で取り扱うことができます。
例えば以下が変数です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function myFunction() { /* *変数の値は基本上書きが可能 */ //numという変数に『12345』という数値が入ってます var num = 12345; Logger.log(num); //strという変数に『Hello ビジボット』という文字が入ってます var str = 'Hello ビジボット'; Logger.log(str); //numに1という値を上書きする num = 1; Logger.log(num); } |
ログ結果はこんな感じ。
1 2 3 |
[19-02-25 01:47:46:598 JST] 12345.0 [19-02-25 01:47:46:598 JST] Hello ビジボット [19-02-25 01:47:46:599 JST] 1.0 |
変数は上書きが可能でしたが、上書きによる変更をさせたくない時があります。(例えば消費税とか)
そのような場合には『定数』を使います。定数は変数同様、名前を付けられる『データの箱』として使用できますが、一度値を格納したら値の上書きをすることができません。
例えば以下が定数です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function myFunction() { /* *定数の値は上書きが不可能 */ //TAXという定数に『1.08』という数値が入ってます const TAX = 1.08; Logger.log(TAX); //SITE_NAMEという定数に『ビジボット』という文字が入ってます const SITE_NAME = 'ビジボット'; Logger.log(SITE_NAME); //TAXに1.10という値を上書きする記述をしてみる... TAX = 1.10; Logger.log(TAX); } |
結果として上書きされず、最初に宣言した値がそのまま格納された状態になっています!
1 2 3 |
[19-02-25 01:54:22:985 JST] 1.08 [19-02-25 01:54:22:986 JST] ビジボット [19-02-25 01:54:22:986 JST] 1.08 |
4.データ型
基本的にデータ型といえば、取り扱うデータの種類のことを言います。
扱うデータが『数値型』であれば演算の処理を行うことができますが、『文字列型』のデータに対しては演算の処理が行えません!
データの種類ごとに応じて処理が異なります。
数値型 | 整数値や浮動小数点値 | 100,1.08 |
文字列型 | 文字列 | ‘ビジボット’ |
真偽型 | trueとfalseのどちらかの結果が入るデータ型 | true,false |
配列型 | インデックスをキーとするデータの集合 | {10,20,30} |
オブジェクト型 | プロパティをキーとするデータの集合 | {x:10,y:20,z:30} |
null | 値が何も入っていないこと | null |
undefined | 未定義であること | undefined |
5.配列
複数の箱が連なっている状態をイメージします。
これらのデータには必ず番号は振られており、入っているデータ以外に『インデックス』が振られています。
※インデックスの値は必ず『0』から始まります
例えば以下が変数です。
1 2 3 4 5 6 7 8 9 10 11 12 |
function myFunction() { /* *一つの変数に複数の値を格納する */ //シンプルな配列 var numbers = [10,20,30,40]; Logger.log('numbers:' + numbers); //指定箇所の値のみを取得 Logger.log('numbers[0]:' + numbers[0]); } |
ログ結果はこんな感じ。変数名[0]は作成した配列の値の部屋番号を指定します。
この場合は『0番目』の部屋番号を選択しているので、numbersの変数に入っている『0番目の値は10』という結果になります。
1 2 |
[19-02-25 02:12:40:760 JST] numbers:10,20,30,40 [19-02-25 02:12:40:760 JST] numbers[0]:10 |
二次元配列は先ほどの変数と考え方は全く一緒で、扱うデータ量が増えました。
例えば以下が変数です。
1 2 3 4 5 6 7 8 9 10 11 12 |
function myFunction() { /* *一つの変数に複数の値を格納する */ //シンプルな配列 var numbers = [[10,20,30,40],[20,30,40]]; Logger.log('numbers:' + numbers); //指定箇所の値のみを取得 Logger.log('numbers[0]:' + numbers[0]); } |
ログ結果はこんな感じ。変数名[0]は作成した配列の値の部屋番号を指定します。
この場合は『0番目』の部屋番号を選択しているので、numbersの変数に入っている『0番目の値は10,20,30,40』という結果になります。
1 2 |
[19-02-25 02:17:14:473 JST] numbers:10,20,30,40,20,30,40 [19-02-25 02:17:14:474 JST] numbers[0]:10,20,30,40 |
6.計算
GASにはすでに様々な演算子が用意されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
function myFunction() { var x = 1; var y = 2; /* *x + yで足し算を実行 */ var z = x + y; Logger.log(z); /* *y - xで引き算を実行 */ z = y - x; Logger.log(z); /* *x/ yで割り算を実行 */ z = x / y; Logger.log(z); /* *x * yで掛け算を実施 */ z = x * y; Logger.log(z); /* *x % yで剰余を実施 */ z = x % y; Logger.log(z); } |
1 2 3 4 5 |
[19-02-25 02:28:58:486 JST] 3.0 [19-02-25 02:28:58:487 JST] 1.0 [19-02-25 02:28:58:488 JST] 0.5 [19-02-25 02:28:58:488 JST] 2.0 [19-02-25 02:28:58:489 JST] 1.0 |
※演算には優先順位がありますので注意
※他にも代入演算子などがあります
今回はここまでです!
こういった基礎知識を全く学ばずにここまできたので、しっかりと基礎から固めていくことが大事だと改めて実感してます。。。しっかりとこの本は熟読していきます!(笑)
最後までお付き合い頂き、ありがとうございました!