[ノンプロ研]GAS中級講座5期Day3 組み込みオブジェクト

GAS

どうも。つじけ(tsujikenzo)です。このシリーズでは、2021年5月から始まりました「ノンプロ研GAS中級講座5期」について、全8回でお届けします。今日は4回目のDay3です。

前回のおさらい

前回は、「クラス・ライブラリ」 をお届けしました。

[ノンプロ研]GAS中級講座5期 Day2クラス・ライブラリ
どうも。つじけ(tsujikenzo)です。このシリーズでは、2021年5月から始まりました「ノンプロ研GAS中級講座5期」について、全8回でお届けします。今日は3回目のDay2です。前回のおさらい前回は、「スコープと関数」 をお届...

今回は、 「組み込みオブジェクト」 をお届けします。

今日のアジェンダ

  1. 組み込みオブジェクト
  2. Stringオブジェクト
  3. Arrayオブジェクト
  4. Dateオブジェクト
  5. Mathオブジェクト

組み込みオブジェクト

Google Apps Scriptは、JavaScriptをベース としたプログラミング言語です。

JavaScriptには、ユーザーがよく使うであろうメンバーが定義された「標準組込みオブジェクト(Built-in Object)以降、組込みオブジェクト」があります。

標準組み込みオブジェクト - JavaScript | MDN
本章では JavaScript の標準組み込みオブジェクトについて、それらのメソッドやプロパティと共にすべて文書化しています。

とてもたくさんの組込みオブジェクトがあるようですが、GASで使えるのは、数を扱う[Number]や日付を扱う[Date]など、一部です。

オブジェクトですので、このようにドット記法を用いて呼び出します。(ブラケット記法は使えません。)

//一部のオブジェクトを除いて、組込みオブジェクトはパスカル記法で定義されています。
Object.メンバー

parseIntとparseFloatメソッド

Number関数の他に、取り扱う数値が「整数」なのか「浮動小数点」なのかによって、文字列型を数値型に変換するメソッドが2つあります。
– Number()・・・数値型として返す
– parseInt・・・整数を返す
– parseFloat・・浮動小数点を返す

このメソッドは、各2種類あり、1つは、組み込みオブジェクトの「Numberオブジェクト」のメソッドです。

//整数を返す
Number.parseInt(string)

//浮動小数点を返す
Number.parseFloat(string)

もう1つは、「最上位関数」の2つのメソッドです。

//整数を返す
parseInt(string)

//浮動小数点を返す
parseFloat(string)

使い分けをする場面はあまりないと思いますが、社内コーディングガイドラインを作成したり、統一することが望ましいです。(私は最上位関数で書きます。)

//整数を返す
console.log(Number.parseInt('100歳'));
console.log(parseInt('100歳'));

//浮動小数点を返す
console.log(Number.parseFloat('42.195km'));
console.log(parseFloat('42.195km'));

同様に、文字列型に変換するString()系のメソッドも2種類ありますが、社内コーディングガイドラインを作成したり、統一することが望ましいです。(私はtoString()が好きです。)

//String関数
console.log(String(['hoge']));

//toString()メソッド
console.log(['fuga'].toString());

スプレッド構文と分割代入

最近覚えた、スプレッド構文と分割代入を使用したカッコイイ書き方です。今まではvalues.shift()することが多かったですが、社内コーディングガイドラインなどで、こちらに統一してもいいかもしれません。スプレッド構文の理解は必須ですが。

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const [headers, ...records] = sheet.getDataRange().getValues();
console.log(headers);
console.log(records);

反復メソッド

filter、map、reduceメソッドは、3大コールバック関数と呼ばれ(私が読んでるだけです)、配列を操作するために重宝していくメソッドになります。

コールバック関数のおさらいをしましょう。コールバック関数とは、 「引数に関数を持たせた関数」 でした。そして、引数に関数をもたせるために、「関数リテラル」を使うことを初級講座で習いましたね。

以下は、関数リテラルの省略記法である「アロー関数」を使って、関数の引数に関数を持たせたコードです。

function myFunction() {
const array = ['a', 'b', 'c'];
const func = (element, index, array) => {
return [element, index];
}

const mappedArray = array.map(func);
console.log(mappedArray); //[ [ 'a', 0 ], [ 'b', 1 ], [ 'c', 2 ] ]

}

filter()メソッドや、map()メソッドの場合、以下の3つの引数が重要になります。
第1引数(elementやvalueなど)・・・順番に渡される配列の要素
第2引数(indexやiなど)・・・要素のインデックス
第3引数(arrayやarrなど)・・・操作されている要素の元の配列

コールバック関数をネストしだすと、思わぬところで第2引数のindexが活躍したりします。慣れるまで経験が必要かもしれませんが、積極的に反復メソッドは使うようにしましょう。

Dateオブジェクト

Dateオブジェクトの生成方法は多くありません。パターンを覚えてしまいましょう。

//処理を実行した日付時刻が取れる。
new Date();

//月だけゼロ始まり。日を含む以降は省略できる。
new Date(2020, 2, 14, 19, 30, 15);

//スペース注意。日以降は省略できる
new Date('2020/02/14 19:30:15');

//タイムスタンプとかUnixエポックと呼ばれる
new Date(1577804400000));

またよく使う日付の加算なども、スニペットに加えてしまいましょう。

//日時の加算には、new Date(2020, 2, 14, 19, 30, 15);タイプを使う。
const d    = new Date();
const date = new Date(d.getFullYear() + 1, d.getMonth() + 1, d.getDate() + 1);

//日付のフォーマットを変換する
const strDate = Utilities.formatDate(date, 'JST', 'yyyy/MM/dd HH:mm:ss');

//月末と先月初
const d = new Date();
const first = new Date(d.setDate(1)); //月初
const end   = new Date(d.setDate(0)); //先月末

まとめ

以上で、「組み込みオブジェクト」をお届けしました。GASで使える組み込みオブジェクトはたくさんあります。

中でも配列を操作するArrayオブジェクトのメソッドやDateオブジェクトのメソッドは、実務でも使うことが多いと思います。たくさん書いて慣れていきましょう。

次回は、 「Script Services1」 をお届けします。

このシリーズの目次

  1. [ノンプロ研]GAS中級講座5期 事前課題
  2. [ノンプロ研]GAS中級講座5期Day1 スコープと関数
  3. [ノンプロ研]GAS中級講座5期Day2 クラス・ライブラリ
  4. [ノンプロ研]GAS中級講座5期Day3 組み込みオブジェクト
  5. [ノンプロ研]GAS中級講座5期Day4 ScriptServices1
  6. [ノンプロ研]GAS中級講座5期Day5 ScriptServices2
  7. [ノンプロ研]GAS中級講座5期Day6 HTTP通信・API
  8. [ノンプロ研]GAS中級講座5期卒業LT ノンプログラマーによるGAS開発モデルとは
  9. [ノンプロ研]GAS中級講座5期卒業LT プロの開発を知ろう
  10. [ノンプロ研]GAS中級講座5期卒業LT ノンプログラマーによる開発
タイトルとURLをコピーしました