gpt4 book ai didi

javascript - Google Apps 脚本选择具有特定列的特定行

转载 作者:行者123 更新时间:2023-12-03 00:04:51 25 4
gpt4 key购买 nike

我正在尝试找出如何使用 Google Apps 脚本仅提取特定的行和列。 =QUERY 不是一个可以使用的选项。需要保留脚本中的所有逻辑 - 我的实际数据集非常大。为了说明我正在尝试解决的问题。我有一个测试数据的小表。 TestData我只想要第 2,3,5 列(基于零的索引)以及带有“fur”的行。

function testFour(sheetID, fromTabName, toTabName) {
var sourceTab = SpreadsheetApp.openById(sheetID).getSheetByName(fromTabName);
var values = sourceTab.getDataRange().getValues();
var columns = [2,3,5]; //only want these columns
var output = new Array();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[0].length; j++) {
if (values[i][4] == "fur") { // only want these rows
if (j in columns) {
output.push(values[i][j]);
}
}
}
}
var targetTab = SpreadsheetApp.openById(sheetID).getSheetByName(toTabName);
targetTab.getRange(1, 1, output.length, columns.length).setValues(output);
}

此代码位有效,但如果有很多列,则不太可维护:

for(n=0; n < values.length; ++n) {
var columns = [2,3,5];
if (values[n][4] === 'fur') {
output.push( [values[n][2], values[n][3], values[n][5]]);
}

当我运行 testFour 函数时,出现有关“在这行代码中无法将数组转换为 Object[][] 的错误:

targetTab.getRange(1, 1, output.length, columns.length).setValues(output);

感谢任何帮助。我真的很惊讶没有找到任何这样的例子。每个解决方案都使用工作表上的 =QUERY。

最佳答案

根据上面库珀的建议,这就是我如何让它发挥作用的:

function testFourNew(sheetID, fromTabName, toTabName) {
var sourceTab = SpreadsheetApp.openById(sheetID).getSheetByName(fromTabName);
var targetTab = SpreadsheetApp.openById(sheetID).getSheetByName(toTabName);
var srcrg = sourceTab.getDataRange();
var srcvA = srcrg.getValues();
var desvA=[];
// var columns = [2,3,5]; //only want these columns
var columns = String("2,3,5").split(','); //only want these columns
var tstVal = "fur";
var tstCol = 4;
for (var i=0;i<srcvA.length;i++) {
var tA=[];
if (srcvA[i][tstCol] ==tstVal) {
for (var j=0;j<columns.length;j++) {
//Logger.log(srcvA[i][columns[j]]);
tA.push(srcvA[i][columns[j]]);
}
desvA.push(tA);
}
}
targetTab.getRange(1, 1, desvA.length, desvA[0].length).setValues(desvA);
}

感谢库珀的指导和建议!

关于javascript - Google Apps 脚本选择具有特定列的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55007357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com