前提・実現したいこと
■複数の Google スプレッドシートのデータを集約する
https://qiita.com/kz_takatsu/items/a89e89a4c5e82414ae3f
複数のスプレッドシートからデータを引っ張り、1つに集約しようとしてます
引っ張ってくる元の所が関数が使われているせいか、うまくいきません
エラーメッセージ Exception: 範囲の行数には 1 以上を指定してください。(行 45、ファイル「aggregateData」)
該当のエラー場所
var
1 outputSheet.getRange(curRow, 1, lastRow-curRow, 1) ←ここ 2 .setValue(id); // 識別子の書き込み 3 curRow = lastRow; 4
### コード全文
// 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, lastRow-curRow, 1) .setValue(id); // 識別子の書き込み curRow = lastRow; } 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などの関数を使っていて、消してみると使用できたりしたのですが、何度も計算するうちに打つ手を施してもエラーでなにもできなくなりました
②なぜか読み込み元のファイルコピーして生成するとなぜか成功するが、2度目の読み込みで失敗したりします
「コピーすりゃいけんじゃん!?」と思って同じ手法をやると成功しなくなります
対象部分で使っている関数
=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),"")
回答1件
あなたの回答
tips
プレビュー