Google Apps Script入門
配列って何なんだ?

Google Apps Script(GAS)の入門解説です
公開日:2016-10-26 最終更新日:2022-11-04

第21回.配列って何なんだ?


プログラミングを学ぶ上で、乗り越えなければならない壁がいくつかありますが、
その一つが、配列になると思います、


その全てを自在に使いこなすには相当の時間が必要ですが、まずは基礎から。
配列配列変数とも言い、変数の一種になります。

変数についの説明では、
データを入れて必要なときに利用するために用意した入れ物で、その入れ物に付けた名前が変数名になります。
このように説明しましたが、
今まで扱ってきた変数には、1つの数値や文字列といったデータを入れて使うというものでした。

これに対して、配列は、
変数に背番号のような番号(インデックス)を付けて、複数のデータを扱えるようにしたものになります。
これにより、一つの変数名で、複数の値を入れる事が出来るようになります。
番号(インデックス)を指定することで、配列内の指定の位置のデータを取得・変更することが出来ます。

では、具体的に、Google Apps Scriptを書いてみましょう。
あまり、理屈にこだわらず、まずは使い方を覚えましょう。


配列を作成する

function myFunction21_1() {
  var ary = ["google", "apps", "script"];
  Browser.msgBox(ary);
  Browser.msgBox(ary[1]);
}

google,apps,script
と表示されます。

var ary = ["google", "apps", "script"];
これで、aryという配列変数を定義し、3つの文字列を入れています。

初期値を入れずに、配列のみを作成するなら、
var ary = [];
このように書きます。


インデックスを指定して操作する

function myFunction21_2() {
  var ary = ["google", "apps", "script"];
  Browser.msgBox(ary[1]);
  var i = ary.indexOf("apps");
  ary[i] = "Apps";
  Browser.msgBox(ary);
}

apps
1
goole,Apps,script
と表示されます。

配列のインデックスは、0から始まります。

ary[1]
インデックスが1なので、2番目の要素になります。

indexOf
引数の文字が入っているインデックスを返します。
指定の文字列が配列に無い場合は、-1が返されます。


配列に追加する

function myFunction21_3() {
  var ary = [];
  ary.push("apps")
  ary.push("script")
  ary.unshift("google")
  Browser.msgBox(ary);
}

google,apps,script
と表示されます。

push
配列の末尾(最後)に追加します。

unshift
配列の先頭(最初)に追加します。


配列から削除する

function myFunction21_4() {
  var ary = ["google", "apps", "script"];
  ary.pop();
  ary.shift();
  Browser.msgBox(ary);
}

pop
配列の末尾(最後)の要素を削除します。

shift
配列の先頭(最初)の要素を削除します。


PPAP

function PPAP() {
  var AP = [];
  var PP = [];
  var PPAP = [];
  AP.push("Pen");
  AP.unshift("Apple");
  Browser.msgBox(AP);
  PP.push("Pen");
  PP.unshift("Pineapple");
  Browser.msgBox(PP);
  for (var i=PP.length-1;i>=0;i--) {
    PPAP.push(PP[i]);
  }
  for (var i=0;i<PP.length;i++) {
    PPAP.push(AP[i]);
  }
  Browser.msgBox(PPAP);
}

踊りながら、解読してみましょう。


配列の繰り返し処理

function myFunction21_5() {
  var ary = ["google", "apps", "script"];
  for (i=0; i<=ary.length-1; i++) {
    Logger.log(ary[i]);
  }
}

forでiを1ずつ進めながら全ての要素をログに出力しています。
これは、foreachで書くこともできます。

function myFunction21_6() {
  var ary = ["google", "apps", "script"];
  ary.forEach(get_ary);
}
function get_ary(arg){
  Logger.log(arg);
}

これは一つにまとめて書くことができます。

function myFunction21_7() {
  var ary = ["google", "apps", "script"];
  ary.forEach(function(arg){
    Logger.log(arg);
  });
}

Logger.logについて

Logger.logはログを表示します。
出力されたログを見るには、
gas 配列 logger.log

%sというログ表示する書式を指定するプレースホルダーも用意されています。
Logger.log(format, [values, …]);
例、
Logger.log("配列の中身は%sです", arg);


多次元配列について

上記までの配列は、1次元配列になります。
変数としての箱が、一列に並んでいるものと考えれば良いです。

多次元配列とは、2次元以上の配列になります。
2次元配列であれば、シートのように、縦横に箱が並んでいる事を想像してもらえれば結構です。

JavaScriptでは、多次元配列は直接的にはサポートされていません。

ですが、実際には多次元配列を作ることが出来ます。
配列には、数値や文字列だけではなく、オブジェクトや配列も格納することができます

そこで、配列の要素に配列を指定することで2次元配列を作成できます。
3次元以上の配列も同様の考え方で作ることが出来ます。
これについては、使う必要が出てきた時点で、実践的な使い方を解説していきます。


配列の最後に

スプレッドシートのセルに直接データを出し入れすると、とても処理時間が遅くなってしまいます。

処理速度向上には、配列の使用が必須になってきますので、ぜひ習得しておきましょう。
第35回.スプレッドシートが非常に遅い、高速化するには
GoogleAppsScriptで、スプレッドシートのセルを扱うと、とても処理時間がかかります、あまりにも遅く、目で動作がゆっくり見えるレベルです、データ量が多くなっても、実用に耐える速度で処理する方法を解説します。スプレッドシートに比べればExcelはかなり速いですが、VBAの書き方によっては処理時間がかかってし…




同じテーマ「Google Apps Script入門」の記事

第18回.組み込み関数を使う

・小数を整数に、切り上げ・切捨て・四捨五入 ・日付を作成 ・日付から、年・月・日を取り出す ・日数後・月数後・年数後を求める ・大文字小文字の変換 ・文字列を置換する ・文字列から一部を取り出す ・文字列系の練習問題 ・練習問題の回答 ・組み込み関数の最後に
第19回.いろいろな繰り返し処理
・にある反復処理 ・繰り返し処理の例題 ・for ・do...while ・while ・break ・continue ・繰り返し処理の最後に
第20回.エラー処理(try・・・catch)
・エラー処理(try・・・catch)の例題 ・try・・・catch ・try・・・catchでエラー処理を入れたスクリプト ・tryブロックに含めるステートメントの範囲 ・エラー処理の最後に
第21回.配列って何なんだ?
第22回.オブジェクト、メソッド、プロパティとは
・オブジェクト ・メソッド ・プロパティ ・具体例 ・オブジエクトの階層構造とメソッドの戻り値
第23回.行・列を操作する(挿入・削除・非表示・サイズ)
シートの行や列全体に対する操作になります、挿入、削除、表示非表示、行高、列幅、これらは、sheetオブジェクトのメソッドを使います。以下では、sheetオブジェクトのメソッドのうち、行・列に関するメソッドを抜粋しています。基本として見方、使い方ですが、1行や1列のみ対象の場合は単数形(Row,Column) 複数行…
第24回.シートの挿入・削除・名前変更
シートの挿入、シートの削除、シートの名前変更です、シートの挿入・削除は、Spreadsheetオブジェクトのメソッド、名前の変更は、Sheetオブジェクトのメソッドになります。以下では、これだけ覚えておけば良いというメソッドに限定して抜粋しています。
第25回.スプレッドシート(ブック)の作成・名前変更
スプレッドシートの作成と名前変更です、スプレッドシートの作成は、SpreadsheetAppのcreateメソッド、名前の変更は、Spreadsheetオブジェクトのrenameメソッドになります。削除は、と思ってメソッドを探しましたが、見当たりませんでした。
第26回.セルのコピー&各種ペースト
GoogleAppsScriptで、スプレッドシートのセルをコピペする時の書き方になります、セルのコピペといっても、セル全体、値のみ、書式のみと、いろいろな貼り付け方法があります。記述方法は複数ありますが、基本の使い方だけ覚えれば十分です。
第27回.セルに数式を入れる
GoogleAppsScriptで、スプレッドシートのセルに、計算結果ではなく、計算式そのものを入れる場合のほうほうについての解説です。スクリプトで処理する場合は計算結果を入れる事が多いのですが、時に計算式を入れた方が後の使い勝手が良い場合もあります。
第28回.リンクの挿入・編集・削除
GoogleAppsScriptで、スプレッドシートのセルにハイパーリンクを挿入する場合です、しかし、そもそもスプレッドシートでは、Excelのハイパーリンクとは違い、HYPERLINK関数しかありません。そこで、スクリプトでハイパーリンク関数を挿入する方法についてという事になります。


新着記事NEW ・・・新着記事一覧を見る

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ