さて、今回の記事からはいよいよ日付をまとめて処理していきたいと思います。
前回の記事をお読みになりたい場合は、こちらをご覧くださいね↓
このようなシートを用意しました。
なんのシートなんでしょうか。適当に用意しただけなので私にもわかりません(笑)
まずはこのシートを、まとめて配列に格納してしまいましょう。
function testDateFunction() {
const ss = SpreadsheetApp.getActiveSheet();
const whole_sheet = ss.getDataRange().getValues();
}
これで、現在開いているシートが丸ごと取得できました。
変数whole_sheetの中身は、以下のような二次元配列になっています。
ちょっと見づらいですね……💦
スプレッドシートやエクセルでは、シートは二次元配列で表示されます。
二次元配列とは、配列の中にさらに配列が入っているものです。
ひとつのセルがひとつの要素となり、その集まりが「行」として一次元配列に、またそのひとつの行がひとつの要素として配列にまとめられ、二次元配列になるという感じです。
[セル、セル、セル] ← 一次元配列
[[セル、セル、セル],
[セル、セル、セル],
[セル、セル、セル]]
↑二次元配列
という感じです。
ちなみに、一行分のデータを取得した際には一次元配列になる、なんてことはないですよ。
一行分なら、[[セル、セル、セル]] ←こういう二次元配列になりますね(´∀`*)
では、取得したデータをforEachで表示させてみましょう。
whole_sheet.forEach(function(element) {
console.log(element);
});
表示できました。先ほどとちょっとだけ違いますね。先ほどは二次元配列全体が表示されていましたが、今回はその中身の一次元配列が、別々に表示されていますね。
その一次元配列が、forEachで指定した「element」に入っているわけです。
ここが慣れないと分かりづらいのですが、二次元配列とは一次元配列をさらに配列に入れたものといいましたね。
先ほどと同じように、図で考えてみましょう。
一次元配列ならば
[りんご、みかん、バナナ]
「りんご」や「みかん」が、この配列の要素になります。
ですがこれが二次元配列になると、
[[りんご、みかん、バナナ],
[レタス、ピーマン、トマト],
[パン、ごはん、麺]]
[りんご、みかん、バナナ] や、[レタス、ピーマン、トマト] といった一次元配列がひとつの要素となるんですね。
ですから先ほどループさせたelementという要素の中には、配列が入っていたのですね。
では一行分の配列ではなく、A列の日付だけを表示するにはどうしたらいいでしょうか?
whole_sheet.forEach(function(element) {
console.log(element[0]);
});
とすればOKです!
elementという一次元配列のなかの、さらに0番目(配列は0から始まります)の要素が表示されているといったわけです。
もしB列を表示させたければ、element[1]とすればOKです。
さて、いよいよ日付を比較していきたいと思います。さきほど、A列だけを順々に表示させることができましたね。
ではA列には日付が入っているのだから、.getTime()をつけて表示させてみましょう。
whole_sheet.forEach(function(element) {
console.log(element[0].getTime());});
あれ!?
エラーがでた……( ;∀;)
先ほどはA列をきちんと表示できたはずなのに、.getTime()をつけた途端にエラーとなってしまいました。
次回は、このエラーの原因を探り、きちんとgetTime()で一覧を表示できるようにさせてみましょう!
お読みいただき、ありがとうございましたm(__)m
次の記事↓
出品しているサービス↓