###現在の挙動
■複数の Google スプレッドシートのデータを集約する
https://qiita.com/kz_takatsu/items/a89e89a4c5e82414ae3f
スプレッドシートの別シートに指定してある、読み込み領域に達するまで、
空白を無視して処理してしまう
※領域に達すると次のスプレッドシートを読み込む
※尚、空白を無視して処理してしまいますが、対象のセルには数式などは含まれていません
前提・実現したいこと
空白は処理しないようにする
→ 空白の場合は次のスプレッドシートを読み込むor
→ 空白の結果は反映しない
### コード全文
// Sidebar.htmlをテンプレートにHTMLServiceを生成
// Sidebar.htmlが必要
function showSidebar() {
var ui = HtmlService.createTemplateFromFile('Sidebar')
.evaluate()
.setTitle("シート集計");
SpreadsheetApp.getUi().showSidebar(ui);
}
// スプレッドシートを開いたときに呼ばれる
function onOpen() {
showSidebar();
}
// 集計対象フォルダ以下のファイルを集計
function aggregateData() {
var cfg = getConfig();
var targetFolder = DriveApp.getFoldersByName(cfg['集計対象フォルダ']).next();
var files = targetFolder.getFiles();
Logger.log(files);
var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(cfg['書き込み先シート']);
if (! outputSheet) {
var sheetName = String(cfg['書き込み先シート']);
Logger.log(sheetName);
outputSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);
}
outputSheet.clear();
var curRow = 1;
var fileList = [];
while(files.hasNext()){
var file = files.next();
var spreadsheet = SpreadsheetApp.open(file); var sheet = spreadsheet.getSheets()[0]; var id = sheet.getRange(cfg['識別子']).getValue(); fileList.push( { "fileName": file.getName(), "id": id } ); var srcRange = sheet.getRange(cfg['読み込み領域']); outputSheet.getRange(curRow, 2, srcRange.getHeight(), srcRange.getWidth()) .setValues(srcRange.getValues());
//var lastRow = outputSheet.getLastRow()+1;
outputSheet.getRange(curRow, 1, srcRange.getHeight(), 1)
.setValue(id); // 識別子の書き込み
curRow += srcRange.getHeight() - 1;
}
return fileList;
}
// 集計設定という名前のシートを読み込んで key-valueに落とし込む
function getConfig() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cfgSheet = ss.getSheetByName("集計設定");
var cfgValues = cfgSheet.getDataRange().getValues();
var cfg = {};
for (var i=0; i<cfgValues.length; i++) {
cfg[cfgValues[i][0]] = String(cfgValues[i][1]);
}
return cfg;
}
### 試したこと
①セルに使用しているUNIQUE関数のせいかと思い「あ、い、う、え、お」に置き換えたが挙動は変わらない
②他のセルの記入されている行数が影響していると思い消したが変わらない
③実際5行までしか数式は入れずにやってみたけど最後まで空白処理してしまう
雑になってしまい申し訳ございません
スクリプト知識が無味なため、このような形となっております
よろしくお願いいたします
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/13 09:06