見出し画像

【GAS基礎編19】GASの基本中半戦!これまで学んだことのテスト

おはようございます!MARIEです(`・ω・´)ゞ

宿題の答え合わせ

前回出題した宿題は無事に完了しましたでしょうか?

宿題は以下でした。

スプレットシートから、
「私はバナナとお肉を隣町のスーパーに買いに行きます」と出力してください。

これ前回実施したプログラムの続きから出した宿題なので、前の記事をまだ見ていない方は、まずは前回の記事のチェックからお願いいたします!

では早速答え発表!答えはこうです。
※配列の番号は以下と違くてもOK

function shopping1() {
 const sheet = SpreadsheetApp.getActive().getSheetByName('シート1');
 const shopping = sheet.getDataRange().getValues();

 console.log('私は' + shopping[0][0] + 'と' + shopping[3][0] + 'を' + shopping[1][1]  + 'のスーパーに買いに行きます');
}

結果はこうなりました。

画像1

できたできた(゜-゜)♪
本当覚えていくのは大変ですが、解けた時は本当に幸せな気持ちになりますね。

ということで、今日はテストの章です。
わからない(*_*; というストレスを感じてからの、ちゃんとできた時の幸福を味わいましょう(笑)

【一次元配列のテスト】

一次元配列で、バナナの金額の平均を出力するプログラムを、ループを使って書いてください。
function productPrice() {
 const scores = [200, 150, 100];

 //ここのコードを考えよう
 //要素を一つずつ取り出して足す
 //合計から平均を出す

 console.log(xxxxxxx);
}

一次元配列の答えと解説

順番にゆっくり考えていきましょう( `ー´)ノ
以下答えのプログラムです。

【答え】

function productPrice() {
 const banana = [200, 150, 100];

 let total = 0;
 let average = 0;

 for (let i = 0; i < banana.length; i++) {
   total = total + banana[i]
 }
 console.log(total);

 average = total / banana.length;
 console.log(average);
}

結果はこうなりました。

画像5

考え方として、今回出したい結果はバナナの金額の「平均値」ですよね。
平均値を出すために必要なのは「合計値」が必要。
ってことは必要なのは「合計値」と「平均値」。
という流れで考えると、おのずと最初にやるべきことが思い浮かびます。

では初めに、出力したい結果(今回の場合は2つ)を変数に定めます。
以下の部分です。

let total = 0; //合計値
 let average = 0; //平均値

その次に、合計値を出力するプログラムを書きます。以下の部分です。

 for (let i = 0; i < banana.length; i++) {
   total = total + banana[i]
 }
 console.log(total);

その次に、平均を出力するプログラムを書きます。以下の部分です。

 average = total / banana.length;
 console.log(average);

これで完成です(゜-゜)♪
どうですか?順番に一つずつ考えて解いていくと、意外と簡単にプログラムを書くことができますよね!

【二次元配列テスト】

画像2

スプレットシートに記載した、バナナの金額の平均を出力するプログラムを、ループを使って書いてください。
function productPrice() {
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
 const banana = sheet.getDataRange().getValues();
 let total = 0;
 let average = 0;

 // ここに すべての点数を足す処理を書いてみましょう

 console.log(total); // ここに450が表示されたらOK

 //最後に平均値を出してみましょう


}

ちなみに現時点では変数bananaの中身はこうなってます!

画像3

二次元配列の答えと解説

こちらも焦らず順番にゆっくり考えていけばきっと大丈夫です(`・ω・´)ゞ
以下答えのプログラムです。

【答え】

function productPrice() {
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
 const banana = sheet.getDataRange().getValues();
 let total = 0;
 let average = 0;

 for (let i = 0; i < banana.length; i++) {
   total = total + banana[i][2];
 }
 console.log(total);

 average = total / banana.length;
 console.log(average);

}

結果はこうなりました。

画像6

考え方として、今回も出したい結果はバナナの金額の「平均値」ですよね。
平均値を出すために必要なのは「合計値」が必要。
ってことは必要なのは「合計値」と「平均値」。
という流れで考えると、おのずと最初にやるべきことが思い浮かびます。

では初めに、出力したい結果(今回の場合は2つ)を変数に定めます。
以下の部分です。(ここまでは一次元配列と同じ)

let total = 0;
let average = 0;

その次に出すのは合計値。一次元配列と違うのは今回はスプレットシートから情報を取ってきたいということ。
途中までは一次元配列と同じ。違うのは[2]が追加されただけ。
これは、totalを出す条件式は、[i]行目の[2]列目(厳密に言うと3列目だけど)を足していってくださいという式になっているだけです。
以下の部分です。

 for (let i = 0; i < banana.length; i++) {
   total = total + banana[i][2];
 }
 console.log(total);

その次に、平均を出力するプログラムを書きます。以下の部分です。
(これも一次元配列の時と同じですね)

 average = total / banana.length;
 console.log(average);

どうですか?今までの知識がちゃんと理解をした上で頭の中に入っていれば、もしかしたら今回のテストはそこまで難しくなかったかもしれません(゜-゜)振り返り、おさらいが非常に重要ですね!

二次元配列のテクニックのご紹介

画像4

列のインデックスがわかっているなら事前に変数にしちゃうのが良いそう。

function productPrice() {
 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
 const banana = sheet.getDataRange().getValues();
 let total = 0;
 let average = 0;
 const indexPrice = [2] //ここで変数を決めて

 for (let i = 0; i < banana.length; i++) {
   total = total + banana[i][indexPrice]; //ここで使う
 }
 console.log(total);

 average = total / banana.length;
 console.log(average);

}

こういったテクニックも覚えつつ、どんどん成長していきたいなぁ。

ということで、今回のテストはこれにて終了( `ー´)ノ
そしてテストの会だったので宿題はありません!今日はゆっくりお休みください。

また次回から新しいことを覚えていくよ!
ドキドキワクワク♪ということで、また次回よろしくお願いいたします(`・ω・´)ゞ


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