1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GAS 基本文法 備忘録①【デバック 演算子 繰り返し処理 値渡し・参照渡し】

Last updated at Posted at 2020-08-04

備忘録です。

GoogleAppsScript 完全入門で学んだことを備忘録としてまとめていきます。

  • 自分が知っていることや、解説、今は必要ないなと思ったことは省いています。
  • 解説などは自分が分かりやすい言葉で書いているので厳密に違うこともあるかもしれません。

用語

ステートメント

命令文の1行(最小単位)のこと

Browser.msgBox("Hello");  // ステートメント

クラス

Browser

Googleスプレッドシートに固有のダイアログボックスへのアクセスを提供するクラス。

※ダイアログボックス
OSの操作画面で、入力やメッセージの確認のためにウィンドウとは別個に開くウィンドウのこと。

構文
Browser.msgBox(text)
// メッセージボックスが表示される
スクリーンショット 2020-08-03 9.32.09.png

ログを表示させる。

めちゃくちゃ使う。

構文
Logger.log(data)
スクリーンショット 2020-08-03 9.39.13.png

デバック方法

ブレークポイントの設置

※ブレークポイント
デバックを実行した際に処理が止まるポイントのこと。

赤い丸がブレークポイント⇩

スクリーンショット 2020-08-03 9.41.22.png

デバックの実行

:beetle:マークを押すとでバックウィンドウが表示され、変数の値の変化を確認できる。
スクリーンショット 2020-08-03 9.42.28.png

オブジェクト(ハッシュ)から値を取り出す2種類の方法

①ドット記法

function myFunction() {
  var person = {name: 'mike', age: '22'};
  Logger.log(person.name);
}

②ブラケット記法

function myFunction() {
  var person = {name: 'mike', age: '22'};
  Logger.log(person['age']);
}

インクリメント演算子・デクリメント演算子

インクリメント

数値を1増加させる
記述例:x++ ++x

デクリメント

数値を1減少させる
記述例:y-- --y

スクリーンショット 2020-08-03 11.06.21.png

比較演算子

==
左辺と右辺が等しければtrue

!=
左辺と右辺が等しくなければtrue

===
左辺と右辺がデータ型も含め等しければtrue

!==
左辺と右辺がデータ型も含め等しくなければtrue

function myFunction() {
  Logger.log(5 == '5');    //true
  Logger.log(5 === '5');   //false
  
  Logger.log(5 != '5');    //false
  Logger.log(5 !== '5');   //true
}

switch文

条件分岐が可能

function myFunction() {
  var rank = '100点';
  switch (rank) {
    case '100点':
      Logger.log('すごい!');
      break;
    case '70点':
      Logger.log('いい感じです。');
      break;
    dafault:
      Logger.log('頑張りましょう。');
  }
}

// すごい!

※switch文はbreakを記述しないとブロックから抜け出せない。

繰り返し処理(ループ処理)

while文

条件式がtrueになるまで繰り返す。

function myFunction() {
  var x = 1;
  while (x < 100) {
  x *= 3;
    Logger.log('xの値は%sです。', x);
  }
}

%sはプレースホルダーで、値は可変で渡すことができる。(今回は第二引数で渡したxの値が%sに入る)

スクリーンショット 2020-08-04 9.13.44.png

for文

繰り返しの回数が決まっている時に使用。

構文
for (初期化式; 条件式; 増減式){
    // 条件がtrueの間、実行される処理
}

繰り返す回数を設定するための変数をカウンタ変数という。

①初期化式
カウンタ変数の初期値を決めるための式

②条件式
カウンタ変数を用いた条件式
この条件式がtrueだったときはfor文がループ処理される

③増減式
一般的にはカウンタ変数の値を増減させる式
function myFunction() {
  for (var i = 1; i <= 5; i++) {
    Logger.log('値は%sです。', i);
  }
}
スクリーンショット 2020-08-04 9.30.04.png

for...in文

オブジェクト(ハッシュ)の全ての**プロパティ(値に対応するキー)**を取り出すまでループ処理を行う。

構文
for (変数 in オブジェクト) {
    // ループ内で実行する処理
}
function myFunction() {
  var persons = {name: 'Mike', age: 25, job: 'Pastry chef'};
  for (var p in  persons) {
    // オブジェクトのpersonsから取り出した一つ一つのプロパティを、変数のpに代入
    Logger.log('%sは%sです!', p, persons[p]);
  }
}
スクリーンショット 2020-08-04 9.44.18.png

繰り返し処理の中断

break文を使用する。

function myFunction() {
  var num = 1;
  for (var i = 1; i <= 10; i++){
    num *= 2;
    Logger.log('iの値は%sでnumの値は%s', i, num);
    if (num > 50) {
    break
    }
  }
}
スクリーンショット 2020-08-04 9.51.07.png

繰り返し処理のスキップ

continue文を使用する。

function myFunction() {
  for (var i = 1; i <= 10; i++){
    if (i % 3 === 0 || i % 5 ===0) {
      continue;
    }
    Logger.log('iの値は%s', i);
  }
}
スクリーンショット 2020-08-04 9.58.39.png

値渡し・参照渡し

値渡し

数値、文字列、真偽値などを引数に指定した時。
値をコピーして関数に渡す。コピー元となった値には上書きされない。

function sum() {
  x = 10;
  Logger.log('num(y)の値は%sです。', num(x));
  Logger.log('xの値は%sです。', x);
}

function num(y) {
  y += 1;
  return y;
}
スクリーンショット 2020-08-04 10.50.48.png

参照渡し

オブジェクト(ハッシュ)や配列を引数に指定した時。
値をそのまま使用する(参照値を渡す)。上書き保存される。

function sum() {
  x = [10, 28, 30];
  Logger.log('xの値は%sです。', x);
  Logger.log('num(y)の値は%sです。', num(x));
  Logger.log('xの値は%sです。', x);
}

function num(y) {
  y[0] += 30;
  return y;
}
スクリーンショット 2020-08-04 10.57.32.png
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?