gpt4 book ai didi

javascript - 从电子表格列填充数组的最快方法

转载 作者:行者123 更新时间:2023-11-29 21:24:30 25 4
gpt4 key购买 nike

假设我有一个 Google 表格,列中的数据长度不同,但相邻的垂直单元格之间没有空白。我试图只调用我的电子表格的 getValues() 方法,比如第一列,尽管我想对所有列都这样做。以下代码在我的编辑器中运行起来非常慢:

function myFunction() {
var InfoSheetIterator = DriveApp.getFilesByName("InfoSheets");
var InfoSheetFile = InfoSheetIterator.next();
var InfoSheet = SpreadsheetApp.open(InfoSheetFile);

var DataRange = InfoSheet.getDataRange().getValues();
var ChannelList = DataRange;
var ChannelListArray = new Array();
var i = 0;
while (DataRange[i][0] != "" || DataRange[i][0] != undefined || DataRange[i][0] != null) {
ChannelListArray.push(DataRange[i][0]);
}
Logger.Log(ChannelListArray.toString());
}

有没有更快的方法?我被警告不要在尝试优化时使用过多的 getValues() 调用。在本例中,getValues() 返回的数组名为 DataRange,DataRange[0] 返回第一行中的所有值,但我想要第一列中的所有值。也许我可以只反转列和行,但我认为这会使原始工作表变大。

最佳答案

当您执行 DataRange[0] 时,您得到的是一个只有一行的矩阵,一个数组数组:

DataRange[0] //=> [[value_row1], [value_row2], [value_row3], ...] 

我猜你想要的是获取第一列的扁平数组值:

[value_row1, value_row2, value_row3, ...] 

为此,我使用了一个名为 flatten 的实用函数。它将矩阵转换为一维数组。在这里:

function flatten(matrix){
return [].concat.apply([], matrix);
}

然后你这样做:

flatten(DataRange[0]) 

它将输出展平的列值:[val_row1, val_row2, val_row3, ...]

关于javascript - 从电子表格列填充数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840396/

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