Gra*_*ant 0 javascript arrays google-sheets google-apps-script
我正在寻找一种在谷歌电子表格中获取 2 列并将它们合并到一个数组中的方法,希望我可以获取这 2 列并setValues在新工作表上使用。
我最终会使用 2 个不同的工作表,并且基本上进行了大规模的查找,并将所有结果和所需的列传输到一个新的工作表中。我可以得到完整的dataRange,循环遍历每个数组,获取我想要的值并将它们推送到一个新数组。但是有没有更简单的方法呢?如果我只能查看 row1 并获取标题及其索引,我是否可以将所有列 A 和列 D 放入多维数组中?
标题1 | H2 | H3
我想要 H1 和 H3 以及它们的行,这样我就可以将它们放在新的工作表中
多维数组:
[ [H1, H3], [数据H1,数据H3] ]
var freqArr = new Array(); //Array with sheet data
var myArray = new Array(); //Blank array to house header index
var freqSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('KEY_test_test');
var freqData = freqSheet.getDataRange(); //all data
var freqNumRows = freqData.getNumRows(); //number of rows
var freqNumCol = freqData.getNumColumns(); //number of columns
freqArr = freqSheet.getRange(1, 1, freqNumRows, freqNumCol).getValues();
for (i = 0;i<1;++i){
for (j = 0;j<freqNumCol;++j){
if (freqArr[i][j].toString() == 'Header1' || freqArr[i][j].toString() == 'Header3'){
myArray.push([j]);
}
}
}
Logger.log(myArray);
Run Code Online (Sandbox Code Playgroud)
我现在正在做的是遍历第一行以获取我想要的标题索引(应该如下所示[ 0, 2 ]),但我的日志中返回的所有内容都是 []。我计划使用这个索引数组来遍历我的freqData并获取每个嵌套数组的索引。
任何建议都会很棒。我刚刚开始学习谷歌脚本,我正在自学。谢谢
事实证明,.toString() == 'Header1'不会返回匹配项,但经过更多的 google fu,我发现.toString().match('Header1') == 'Header1'会返回我需要的东西。请参阅下面的更新
var freqArr = new Array(); //Array with sheet data
var myArray = new Array(); //Blank array to house header index
var freqSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('KEY_test_test');
var freqData = freqSheet.getDataRange(); //all data
var freqNumRows = freqData.getNumRows(); //number of rows
var freqNumCol = freqData.getNumColumns(); //number of columns
freqArr = freqSheet.getRange(1, 1, freqNumRows, freqNumCol).getValues();
for (i = 0;i<1;++i){
for (j = 0;j<freqNumCol;++j){
if (freqArr[i][j].toString().match('Header1') == 'Header1' || freqArr[i][j].toString().match('Header3') == 'Header3'){
myArray.push(j);
}
}
}
Logger.log(myArray);
Run Code Online (Sandbox Code Playgroud)
会回来[ 0.0 , 2.0 ]。
但是,我的问题仍然存在,是否有更快的方法来获取 2(n) 列不是并排的并将它们放入数组中以便您可以使用.setValues?
但是,我的问题仍然存在,是否有更快的方法来获取 2(n) 列不是并排的并将它们放入数组中以便您可以使用 .setValues?
是的,有很多方法。其中之一是使用 JavaScript 方法:array.prototype.forEach()
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var array = [];
data.forEach(function(row){
array.push([row[0],row[5]]);
});
sheet.getRange(1,10,array.length,2).setValues(array);
}
Run Code Online (Sandbox Code Playgroud)
获取活动工作表
var sheet = SpreadsheetApp.getActiveSheet();
Run Code Online (Sandbox Code Playgroud)
获取所有的值 sheet
var data = sheet.getDataRange().getValues();
Run Code Online (Sandbox Code Playgroud)
初始化一个变量来保存数组
var array = [];
Run Code Online (Sandbox Code Playgroud)
获取第一列和第六列(A 和 F)的值(从零开始的索引)
data.forEach(function(row){
array.push([row[0],row[5]]);
});
Run Code Online (Sandbox Code Playgroud)
将值返回到从 J1 开始到 K 列和所需行(基于一个索引)结束的范围
sheet.getRange(1,10,array.length,2).setValues(array);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2946 次 |
| 最近记录: |