見出し画像

GAS#3 配列

こんにちは静岡在住の某SEです。
#2 ではループ処理について学習しましたが、#3 ではよりループをより実践的に使うことができる「配列」を体験してみましょう。

#1 で変数に数字や文字を代入しましたが、配列という構造体を作ることもできます。
早速ですが、プログラムと変数の中身のイメージを見てみましょう。

/**
 * 演習 3
 * 配列について
 */
function myFunction3(){
  let moji = [];
  moji[0] = 'あいうえお';
  moji[1] = 'かきくけこ';
  moji[2] = 'さしすせそ';
}

let moji = [];
ここで moji という名前の空の配列を作り、

moji[0] = 'あいうえお';
ここで箱の中に値を入れます。

現実世界と若干異なるのは、コンピューターの世界では箱はゼロから数え始めるということです。
これはGASに限らずプログラミング全般で共通していることなので、プログラマーを目指している人は覚えておいてください。

では、箱の中から値を取り出してみましょう。
画像のように「シート3」を作成して文字を書いてください。

B1セルに 0~2 までの数字を入力し、B2セルに配列の中の文字を表示してみたいと思います。
下記のサンプルを参考に、どんな記述となるか考えてみましょう。

/**
 * 演習 3
 * 配列について
 */
function myFunction3(){
  let moji = [];
  moji[0] = 'あいうえお';
  moji[1] = 'かきくけこ';
  moji[2] = 'さしすせそ';

  // B1 セルの数字を読み取る
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート3');
  let key = sheet.getRange(1,2).getValue();

  // B2 セルに答えを書き込む
  let answer = ''; // ここを書き換えたい
  sheet.getRange(2,2).setValue( answer );
}

早速、回答例ですがシンプルにこのような記述となります。

  let answer = moji[key];

ちょっと凝ったこんな回答もできますね。

  let answer = key + '番目の文字は「' + moji[key] + '」です。';

最後に、onOpen に今回の関数を付け足しておきましょう。

/**
 * シートにメニューを追加
 */
function onOpen(){
  SpreadsheetApp.getActiveSpreadsheet().addMenu('スクリプト',[
    {name: 'サンプル1', functionName: 'myFunction1'},
    {name: 'サンプル2', functionName: 'myFunction2'},
    {name: 'サンプル3', functionName: 'myFunction3'},
  ]);
}

それでは、F5でシートを再読み込みして、myFunction3 を実行してみましょう。
B1 の数値を変えてからサンプル3を実行すると結果が変わるでしょうか?

今回で配列の構造まで学習できたので、次回は配列とループの合わせ技を実践してみたいと思います。
この記事が気に入っていただけた方は、記事への💛と noteのフォローをしてお待ちください。

追記:#4 を公開しました!

この記事が気に入ったらサポートをしてみませんか?