我正在努力完成以下任务:我有一个包含 20 个电子表格的文件夹,其中所有数据表都具有相同的格式(相同的列)。我想遍历所有这些,收集数据,将其组合成一个大数组并将其显示在电子表格上。
但是,我正在努力组合数组。在第一步中,我从最终工作表中加载列标题。然后我循环遍历所有文件(我有一个表,其工作表 ID 存储在数组 aFiles 中),但我无法组合这些数组。我用 aData.concat
尝试过,但没有做任何事情。
function getInformation(){
var ssZ = SpreadsheetApp.getActiveSpreadsheet();
var sZu = ssZ.getSheetByName("Meldeeinheiten");
var aFiles = sZu.getDataRange().getValues();
var sDa = ssZ.getSheetByName("Data_komplett")
var aData = sDa.getRange(1, 1, 1, 15).getValues()
for (var iFile = 1; iFile<aFiles.length; iFile ++){
var org = aFiles[iFile][0];
var name = aFiles[iFile][1];
var id= aFiles[iFile][2];
var ssI = SpreadsheetApp.openById(id);
var sData = ssI.getSheetByName("Data");
var lRow = sData.getLastRow();
if (lRow >= 2){
var aNew =[];
aNew = sData.getRange(2, 1, sData.getLastRow(), 15).getValues();
aData.concat(aData,aNew);
}
}
var lDRow = sDa.getLastRow();
sDa.getRange(2, 1, lDRow , 15).clear()
var rng = sDa.getRange(1, 1, aData.length, 15);
rng.setValues(aData);
Logger.log(aData.length)
}
表中的数据按以下方式构建:
Spreadsheet A:
Org Name Hours Comment
A Joe 15 Weekend
A Pete 20 Sunday
A Maik 15 test
Spreadsheet B
Org Name Hours Comment
B Will 15 Monday
B Anna 18 holiday
B Dave 10 test
...
等等。
有人知道如何组合这些数据并创建“联合数据库”吗?
最佳答案
问题:
aData.concat(aData,aNew);
Array.concat
没有就地连接。它返回
连接的数组。
解决方案:
使用返回的数组:
aData = aData.concat(aData,aNew);
或者使用flatMap ,
const out = aFiles.flatMap(([org, name, id])=>
SpreadsheetApp.openById(id)
.getSheetByName('Data')
.getDataRange()//TODO Modify range according to last row
.getValues())
关于javascript - Google 脚本连接多个数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60959794/