前提・実現したいこと
複数のスプレッドシートのデータを集約する機能を作成しています
しかし、意図しない動作が発生していて困っています
以下、ソース使ってます
https://www.atmarkit.co.jp/ait/articles/1806/12/news009_3.html
意図する動作
空欄の箇所は飛ばして、次のファイルを読み込んでほしい
現在の挙動
空欄の行も読み込んで、ディレクター名のみが永遠と記入されていってしまう
ソースコード全文
function collectData() { var sheetMain = SpreadsheetApp.getActiveSheet(); var files = DriveApp.getFolderById('**********************').getFiles(); while (files.hasNext()) { var file = files.next(); var sheet = SpreadsheetApp.open(file).getSheets()[0]; var Dr = sheet.getRange("E1").getValue(); //Dr名 for (var i = 8; i <= sheet.getLastRow(); i++) { sheetMain.appendRow([ Dr, //ディレクター名 sheet.getRange(i, 20).getValue(), //日付と担当者名 sheet.getRange(i, 21).getValue(), //T担社 sheet.getRange(i, 22).getValue(), //S担社 sheet.getRange(i, 23).getValue(), //E担社 sheet.getRange(i, 24).getValue(), //担社旧 sheet.getRange(i, 25).getValue(), //T営業 sheet.getRange(i, 26).getValue(), //S営業 sheet.getRange(i, 27).getValue(), //E営業 sheet.getRange(i, 28).getValue(), //時間合算 sheet.getRange(i, 29).getValue(), //会社A sheet.getRange(i, 30).getValue(), //会社B sheet.getRange(i, 31).getValue(), //会社C sheet.getRange(i, 32).getValue(), //会社D sheet.getRange(i, 33).getValue(), //会社E sheet.getRange(i, 34).getValue(), //会社F sheet.getRange(i, 35).getValue(), //会社G sheet.getRange(i, 36).getValue(), //会社H sheet.getRange(i, 37).getValue(), //会社I sheet.getRange(i, 38).getValue() //会社J ]); } } }
試したこと
色々調べてgetLastRow()の部分いじってみたんですが何してもうまくいきません;;
関数のせいか?
関数のせい説があるので、以下その場所で使用している関数を記載します
=IF(COUNTBLANK($T2),"",COUNTIFS($B$4:$B$84,$T2,$F$4:$F$84,$U$1)) =UNIQUE(P4:P850) =IFERROR(VLOOKUP($T3&$AC$1,$L:$N,3,false),"")
>空欄の箇所は飛ばして
この意味がわからないですし、これに値するコードがないと思うので、正常な動作だと思います。