前提・実現したいこと
あるスプレッドシート(サンプルデータ)から”Baby”という件名の入った行データを別のシート(集計表)に抽出したいです。データはうまく抽出できましたが、”Baby”以外の件名が入っている行が空白として集計表に組み込まれてしまうのをなんとかしたいです。
※これはサンプルデータですので数行ですが、本番は数百行あります。
▼サンプルデータ
No | 件名 | 金額 |
---|---|---|
Tk01001 | Baby | 15,000 |
Tk01002 | Baby | 15,000 |
Tk02001 | Kids | 20,000 |
Tk03001 | Adult | 25,000 |
Tk01003 | Baby | 15,000 |
Tk03002 | Adult | 25,000 |
▼実現したい結果(集計表)
No | 件名 | 金額 |
---|---|---|
Tk01001 | Baby | 15,000 |
Tk01002 | Baby | 15,000 |
Tk01003 | Baby | 15,000 |
発生している問題・エラーメッセージ
スクリプトを実行するとBaby以外の件名の部分が空白行になって表示され、行が上に詰まっていかないです。
▼実行結果(集計表)
No | 件名 | 金額 |
---|---|---|
Tk01001 | Baby | 15,000 |
Tk01002 | Baby | 15,000 |
Tk01003 | Baby | 15,000 |
該当のソースコード
GAS
1function confirmation() { 2 var ss = SpreadsheetApp.getActiveSheet();//集計表 3 var ssid = "xxx";//サンプルデータ 4 var ss2 = SpreadsheetApp.openById(ssid); 5 var sht = ss2.getSheets(); 6 var area = sht[0].getRange('B:B').getValues(); 7 var rows = area.length; 8 for(var i = 2; i<rows; i++){ 9 if(sht[0].getRange(i, 2).getValue() === 'Baby'){ 10 ss.getRange(i, 1).setValue(sht[0].getRange(i, 1).getValue()); 11 ss.getRange(i, 2).setValue(sht[0].getRange(i, 2).getValue()); 12 ss.getRange(i, 3).setValue(sht[0].getRange(i, 3).getValue()); 13 }else if(sht[0].getRange(i, 2).getValue() != 'Baby'){ 14 continue; 15 } 16 } 17} 18
そりゃ i を行番号として使ってるからじゃないですか?
行番号を別で計算しておかないとcontinueで飛ばした行数分空くのは当たり前かと?
回答1件
あなたの回答
tips
プレビュー