#8GAS入門−判定処理の実装

GAS

目次

今回は3列目に点数の合格・不合格の判定結果を追加します。

前回のコードを利用します。判りやすいようにデータ件数は10件にします。

sheet.getRange().getValues()

関数名はshowResults()にします。
次にシートを取得し、セル範囲を取得し、判定に使うスコアの値を取得します。

sheet.getRange(最初の行番号,最初の列番号,対象の行数,対象の列数).getValues() ですね。

詳しく説明します。

1)先ずは配列scoresを前もって準備します。(scoresを配列として宣言)→var scores = [];
2)セル範囲を取得します。
sheet.getRange()で、一行2列の位置から10行1列分のセル範囲の取得です。
3)次に、配列に値をセットします。getRange().getValues()。

sheet.getRange(1,2,10,1)
var scores = [];
scores = sheet.getRange(1, 2, 10, 1).getValues(); //一行2列の位置から10行1列分のデータをscroesに取得する

sheet.getLastRow()

最後の行を取得できるsheet.getLastRow()を使用すると10という値(マジックナンバー)を使用する必要はありません。

*(マジックナンバーはコードの可読性を下げるためなるべく使わないよにします。)

scores = sheet.getRange(1, 2, sheet.getLastRow(), 1).getValues();

forループ

80点以上なら合格、未満なら不合格という条件判定を3列目にしていきます。

1)先ずは、判定結果を入れる配列resultsを準備します。
var results = [];

push

2)次に、空の配列resultsに判定結果を代入するには、pushメソッドを使います。results.push([]);

三項演算子

3)判定は三項演算子を使います。
scores[i] >= 80 ? ‘合格’ : ‘不合格’
scores[i]が80以上なら「合格」じゃなければ「不合格」という事ですね。

4)繰り返しは、for (i = 0; i < scores.length; i++) {
 //繰り返しの中身
  }

  for (i = 0; i < scores.length; i++) {
    results.push([scores[i] >= 80 ? '合格' : '不合格']);
  }

setValues()

生成された判定結果・配列resultsを三列目に配置するには、
複数の値を扱えるsetValues()を使います。
sheet.getRange(1, 3, results.length, 1).setValues(results);

function showResults() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var scores = [];
  var results = [];
  
  scores = sheet.getRange(1, 2, sheet.getLastRow(), 1).getValues();
  
  for (i = 0; i < scores.length; i++) {
    results.push([scores[i] >= 80 ? '合格' : '不合格']);
  }
  sheet.getRange(1, 3, results.length, 1).setValues(results);
}

 

コメント