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]