どうも。つじけ(tsujikenzo)です。このシリーズでは、2021年5月から始まりました「ノンプロ研GAS中級講座5期」について、全8回でお届けします。今日は4回目のDay3です。
前回のおさらい
前回は、「クラス・ライブラリ」 をお届けしました。
今回は、 「組み込みオブジェクト」 をお届けします。
今日のアジェンダ
- 組み込みオブジェクト
- Stringオブジェクト
- Arrayオブジェクト
- Dateオブジェクト
- Mathオブジェクト
組み込みオブジェクト
Google Apps Scriptは、JavaScriptをベース としたプログラミング言語です。
JavaScriptには、ユーザーがよく使うであろうメンバーが定義された「標準組込みオブジェクト(Built-in Object)以降、組込みオブジェクト」があります。
とてもたくさんの組込みオブジェクトがあるようですが、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」 をお届けします。
このシリーズの目次
- [ノンプロ研]GAS中級講座5期 事前課題
- [ノンプロ研]GAS中級講座5期Day1 スコープと関数
- [ノンプロ研]GAS中級講座5期Day2 クラス・ライブラリ
- [ノンプロ研]GAS中級講座5期Day3 組み込みオブジェクト
- [ノンプロ研]GAS中級講座5期Day4 ScriptServices1
- [ノンプロ研]GAS中級講座5期Day5 ScriptServices2
- [ノンプロ研]GAS中級講座5期Day6 HTTP通信・API
- [ノンプロ研]GAS中級講座5期卒業LT ノンプログラマーによるGAS開発モデルとは
- [ノンプロ研]GAS中級講座5期卒業LT プロの開発を知ろう
- [ノンプロ研]GAS中級講座5期卒業LT ノンプログラマーによる開発