![見出し画像](https://assets.st-note.com/production/uploads/images/62026304/rectangle_large_type_2_0cc173ffb7e9ad667137712b929d3d37.png?width=1200)
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と返す関数を作成してみましょう。
アクティブシートがこうなってるとして、
こんな感じのコードを書いて走らすと
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);
}
こうなる。↓
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 してしまったが、使ってない。
う~~ん、使ってないと忘れてるな~~~。
いいなと思ったら応援しよう!
![good-sun(a03)](https://assets.st-note.com/production/uploads/images/74915135/profile_e6435615735e2ec66a673a40d90bb4a5.png?width=600&crop=1:1,smart)