javascript - Google 脚本连接多个数组的数组

标签 javascript arrays database google-apps-script

我正在努力完成以下任务:我有一个包含 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/

相关文章:

sql - 如何在 DELETE 语句中使用行的物理位置 (ROWID)

javascript - 在 JavaScript 中将 JSON 字符串转换为数组

mysql - 使用 `DISTINCT`关键字时出错?

javascript - jQuery.tweet.js 仅在 1 个站点上不起作用

javascript - 搜索数据为空

javascript - 如何在不下载的情况下将谷歌字体加载到 chrome 打包的应用程序中?

javascript - 强制使用特定的 ES 版本

python 字节 b'....\x000 9' and b' ...\xa1q,)6\x01'

javascript - 将数组的数组的每个数组转换为字符串数组

java - 数据库到android,用php