Javascript 将数据从一张图纸过滤到另一张图纸

Javascript 将数据从一张图纸过滤到另一张图纸,javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,我刚接触阵列,发现自己已经走到了死胡同 我想: 从一张工作表中获取所有数据并将其放入数组中 从该数组中选择某些信息,并将其添加到新数组中 将新的筛选数组保存到其他工作表中 以下是我所拥有的: 函数myFunction() { var ss=SpreadsheetApp.openById('ID'); var sheet1=ss.getSheetByName('sheet1'); var sheet2=ss.getSheetByName('sheet2'); var range=sheet1.ge

我刚接触阵列,发现自己已经走到了死胡同

我想:

  • 从一张工作表中获取所有数据并将其放入数组中
  • 从该数组中选择某些信息,并将其添加到新数组中
  • 将新的筛选数组保存到其他工作表中
  • 以下是我所拥有的:

    函数myFunction()
    {
    var ss=SpreadsheetApp.openById('ID');
    var sheet1=ss.getSheetByName('sheet1');
    var sheet2=ss.getSheetByName('sheet2');
    var range=sheet1.getDataRange();
    var values=range.getValues();
    var lastRow=sheet1.getLastRow();
    var lastCol=sheet1.getLastColumn();
    var rowCounter=0;
    var inArr=新数组(new Array());
    var outArr=[]
    对于(var i=1;i
    INAR数组正在收集整行,我只想收集该行中的特定列

    如果
    values
    是我们的完整数据数组,
    values[i]
    是第i行,我们可以得到相应的简化行,如下所示:

    var newRow=[values[i][0]、values[i][26]、values[i][28];
    
    这将创建一个一维数组,
    newRow
    ,其中包含
    values[i]
    中的特定元素。如果我们对许多值执行此操作,代码行将变得很长且难以维护。我们可以改为使用另一个数组来包含感兴趣的列的索引,并在其上循环:

    var outColumns=[0,26,28];//我们需要的列索引
    对于(var j=0;j
    范围宽度不正确,为1493,但应为1

    在这里,您的范围从
    (1,1)
    (rowCounter,lastCol)
    ,显然是1493列宽,并且使用包含一个元素的数组调用
    setValues()

    sheet2.getRange(1,1,行计数器,lastCol).setValues([outArr]);
    
    单个元素是因为您将
    outArr
    数组括在大括号中,使其成为一个包含一个元素的一维数组(恰好是一个二维数组)

    有一种编写矩形数组的简单模式,无需单独计算行和列:

    sheet2.getRange(1,1,outValues.length,outValues[0].length)
    .设置值(输出值);
    
    通过对整个数组(行)和第一行(列)使用JavaScript数组
    .length()
    方法,我们始终可以获得所设置数组的正确大小

    更新代码
    函数newFunction(){
    var ss=SpreadsheetApp.openById('ID');
    var sheet1=ss.getSheetByName('sheet1');
    var sheet2=ss.getSheetByName('sheet2');
    var range=sheet1.getDataRange();
    var values=range.getValues();
    var-outValues=[];
    var outColumns=[0,26,28];//我们需要的列索引
    var吊杆柱=39;
    对于(变量i=0;i
    Mogsdad,谢谢你花时间看这篇文章。你的解释非常清楚。在运行了几次代码之后,我明白了代码在做什么。再次感谢你的帮助。很高兴提供帮助!注意-最初那里有一个bug,而不是
    [j]
    ,我们需要使用
    [outColumns[j]]
    newRow
    中获得相同的结果。
    values[i][0], values[i][26], values[i][28]