gpt4 book ai didi

javascript - 优化二维数组的迭代

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

我正在尝试优化 Google Apps 脚本,该脚本会反向(从下到上)遍历电子表格中的行。如果过去 15 天,脚本会检查行中的第一个单元格,还会检查第 12 列中的字符串"is",如果两个条件都为真,则该行会从一张工作表移动到另一张工作表。

我遇到的问题是我超过了分配的时间(6 分钟)遍历所有 2500 行的数据并且预计会变得更大。

我确信类似的问题已在此处得到多次解答,但鉴于我目前的编程技能水平,我无法应用我在此处找到的解决方案。如有任何帮助,我们将不胜感激。

这是工作表的格式:

 1st column                 12th column
+-----------+-----/ /-----+-------------+
| Date | | Refunded? |
+-----------+-----/ /-----+-------------+
| 8/29/2017 | | YES |
+-----------+-----/ /-----+-------------+
| 9/26/2017 | | NO |
+-----------+-----/ /-----+-------------+

这是脚本:

function myFunction() {
// get compare date (15 days from current date
var compareDate = new Date().getTime() - (15 * (1000 * 60 * 60 * 24));

// get sheets in spreadsheet
var target = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
var arr = [];

// get 1st sheet data
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var values = sheet.getDataRange().getValues();
var r = values.length;

// logic
while (r >= 1) {
if (values[r] && values[r][0].getTime() < compareDate && values[r][12].toLowerCase() == "yes" ) {
arr.push(values[r])
sheet.deleteRow(r + 1)
}
r--;
}

target.getRange(target.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr.reverse())
}

如果我注释掉以下代码行“sheet.deleteRow(r + 1)”,脚本几乎立即完成,所以这似乎是减慢脚本执行速度的罪魁祸首。是否有更有效的解决方案来解决这个问题?

最佳答案

与其通过迭代删除一行,不如使用 deleteRows(rowPosition, howMany) 在脚本末尾一次删除所有行。 .这行代码可能类似于以下代码:

sheet.deleteRows(2, values.length - 1);

关于javascript - 优化二维数组的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963814/

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