gpt4 book ai didi

javascript - 使用 GAS 将值添加到所选单元格范围的单元格

转载 作者:行者123 更新时间:2023-12-03 03:27:30 29 4
gpt4 key购买 nike

我需要将函数传递的值(例如 20.35)添加到每个选定的单元格。我有一个巨大的列表,下面的函数超时,最多可以运行 6 分钟而无法将添加的结果添加到单元格

如何实现一种解决方法,以便每次在完成计算后立即写入单元格。例如,如果它在完成 10260 后过期,则单元格值将添加 20.35,我可以通过将单元格颜色更改为 1 到 10259 来突出显示。那些原始颜色的单元格意味着它们未添加。

 function addToCells(isAll, valueToAdd) {
var sheet = SpreadsheetApp.getActiveSheet();
if (isAll)
var range = sheet.getDataRange();
else
var range = sheet.getActiveRange();

var Values = range.getValues();

for (var i in Values) {
for (var j in Values[i]) {
var value = Values[i][j].toString();
if (value) {
Values[i][j] = parseFloat(value) + valueToAdd;
//how to write Values[i][j] to cell now
}
}
}
range.setValues(Values); // this will not execute if timesout

}

最佳答案

您的脚本正在将数字与字符串相互转换,这比向数字加 1 花费更多时间。我知道您希望避免弄乱末尾带有“1”的字符串,并且您可能不希望所有空单元格中都有“1”。两者都是通过在添加元素之前检查元素的类型来实现的:

function testadd() {
var range = ... // whatever
var values = range.getValues();
var newValues = values.map(function(row) {
return row.map(function(elem) {
return (typeof elem == "number" ? elem + 1 : elem);
});
});
range.setValues(newValues);
}

不想为每个单元格运行单独的“setValue”,这将是真正的性能 killer ,并且可能很快就会超出执行时间配额。

关于javascript - 使用 GAS 将值添加到所选单元格范围的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254421/

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