見出し画像

GAS中級講座 事前課題 その5【課題2-6】6.スプレッドシートの操作(実践編)

うううう、時間がなくてだいぶ飛ばし気味になっていますよ。

前回のnote


初級講座受講時のnote



演習6-02

以下のように配列とメンバー名を渡すと、配列内にメンバーが含まれていればtrue、さもなくばfalseと返す関数hasMemberを作成してみましょう。
(includesメソッドと同じ役割を持つ関数ですね。)
function myFunction6_02() {
 const members = ['Bob', 'Tom', 'Jay'];
 console.log(hasMember(members, 'Tom')); //True
 console.log(hasMember(members, 'Ivy')); //False
}


初級講座の頃どうやってったけかな~とnoteやコードを見つつ。

https://note.com/0375/n/ne4c937f1c60e?magazine_key=ma549aee8f69b#0F13q


function myFunction6_02() {
 const members = ['Bob', 'Tom', 'Jay'];
 console.log(hasMember(members, 'Tom')); //true
 console.log(hasMember(members, 'Ivy')); //false
}
function hasMember(arraymember, name) {
 return arraymember.includes(name);
}

引数として ['Bob', 'Tom', 'Jay']を渡して、
関数 hasMember では、それが仮引数として受け取って、
arraymember.includes(name); を戻り値で返すよ、っていう形。



演習6-06

アクティブシートのデータの中に「Bob」というデータが含まれていればtrue、さもなければfalseと返す関数を作成してみましょう。

アクティブシートがこうなってるとして、

画像1

こんな感じのコードを書いて走らすと

function myFunction6_06() {
 const values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
 console.log(values);

 console.log(returnBoole6_06_01(values, 'Bob')); //true
 console.log(returnBoole6_06_01(values, 'Kid')); //false

}

function returnBoole6_06_01(valuesData, name) {
 return valuesData.flat().includes(name);
}

こうなる。↓

画像3

const values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
ここで一行でvaluesまで取ってるが、順を追っていくと、トップレベルオブジェクトのSpreadsheetApp→アクティブシート→範囲(Range)→値values という形で、大分類から小分類に向かっていっている感じ。


console.log(values);
ここでいったんvaluesをログ出力してみた。
2次元配列で出力されている。

console.log(returnBoole6_06_01(values, 'Bob')); //true
console.log(returnBoole6_06_01(values, 'Kid')); //false
アクティブシートのデータの中に、Bobは含まれているのでtrue
Kidは含まれていないのでfalse


function returnBoole6_06_01(valuesData, name) {
return valuesData.flat().includes(name);
}
関数部分。
valuesDataは二次元配列になってるので、flat噛ませてからincludesで判定。

演習6-07

以下二つの処理を持つスクリプトを作成してみてください。
・Arrayオブジェクトのpushメソッドを使って最終行に「team: A、name: Ron、age: 30、favorite: melon」を追加する
・Arrayオブジェクトのshiftメソッドを使って、見出し行を削除する
function myFunction6_07() {
 const sheet = SpreadsheetApp.getActiveSheet();
 // const lastRow = sheet.getLastRow();
 const range = sheet.getDataRange();
 const values = range.getValues();
 const addData = ['A', 'Ron', '30', 'melon'];

 console.log(values);

 //Arrayオブジェクトのpushメソッドを使って最終行に「team: A、name: Ron、age: 30、favorite: melon」を追加する
 values.push(addData);
 console.log(values);

 //Arrayオブジェクトのshiftメソッドを使って、見出し行を削除する
 values.shift();
 console.log(values);

 //シートの最終行にaddDataの情報を追加する。
 sheet.appendRow(addData);

}


最終行、という言葉で最初にconst lastRow してしまったが、使ってない。


う~~ん、使ってないと忘れてるな~~~。

いただいたサポートで、書籍代や勉強費用にしたり、美味しいもの食べたりします!