目次
- sheet.getRange(最初の行番号,最初の列番号,対象の行数,対象の列数).getValues → 複数の点数の値を取得
- sheet.getLastRow() → 最後の行を取得できます。
- forループ
- push
- 三項演算子
- setValues()
今回は3列目に点数の合格・不合格の判定結果を追加します。
前回のコードを利用します。判りやすいようにデータ件数は10件にします。
sheet.getRange().getValues()
関数名はshowResults()にします。
次にシートを取得し、セル範囲を取得し、判定に使うスコアの値を取得します。
sheet.getRange(最初の行番号,最初の列番号,対象の行数,対象の列数).getValues() ですね。
詳しく説明します。
1)先ずは配列scoresを前もって準備します。(scoresを配列として宣言)→var scores = [];
2)セル範囲を取得します。
sheet.getRange()で、一行2列の位置から10行1列分のセル範囲の取得です。
3)次に、配列に値をセットします。getRange().getValues()。
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); }
コメント