gpt4 book ai didi

javascript - 仅在 Google 电子表格的最后一行查找和替换

转载 作者:行者123 更新时间:2023-12-02 14:48:30 30 4
gpt4 key购买 nike

我试图让这个函数在电子表格上运行,并查找并替换所有撇号。现在它可以工作,但需要太长时间,现在在我的电子表格中我有 12 行,仅在这些行上运行就花了 128 秒。我想尝试的只是在电子表格的最后一行激活。

我尝试通过添加 var row = r.getLastRow(); 并更改一些位置来使用 row 来使其工作。当我这样做时,我无法让它运行。我将在每次提交表单时运行它,因此它应该始终是最后一行。

我从以下位置获得了代码:https://productforums.google.com/d/msg/docs/7IlOotksJ4I/liXa0SrC-R4J

function fandr() {
var r=SpreadsheetApp.getActiveSheet().getDataRange();
var rws=r.getNumRows();
var cls=r.getNumColumns();
var i,j,a,find,repl;
find="'";
repl="";
for (i=1;i<=rws;i++) {
for (j=1;j<=cls;j++) {
a=r.getCell(i, j).getValue();
if (r.getCell(i,j).getFormula()) {continue;}
try {
a=a.replace(find,repl);
r.getCell(i, j).setValue(a);
}
catch (err) {continue;}
}
}
}

最佳答案

在我看来,用脚本替换文本的最佳方法是使用map。该功能由@serge-insas here 建议。您可以修改它以获得最佳性能结果并仅替换最后一行值:

function testReplaceInRange(){
var sheet = SpreadsheetApp.getActiveSheet()
var lastRow = sheet.getLastRow();
var DataRange = sheet.getDataRange();

var range = DataRange.offset(lastRow - 1, 0, 1); // last Data row

replaceInRange(range,"'","");
}


function replaceInRange(range, to_replace, replace_with) {
//get the current data range values as an array
var values = range.getValues();

// make RegExp
var Rep = new RegExp(to_replace, 'g');
//loop over the rows in the array
for(var row in values){

//use Array.map to execute a replace call on each of the cells in the row.
var replaced_values = values[row].map(function(original_value){
return original_value.toString().replace(Rep,replace_with);
});

//replace the original row values with the replaced values
values[row] = replaced_values;
}

//write the updated values to the range
range.setValues(values);
}

根据 @cory-gross here 的建议,我还使用了带有正则表达式的 trich。 。它的目的是替换所有出现的 to_replace 文本,而不仅仅是第一个。

关于javascript - 仅在 Google 电子表格的最后一行查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392406/

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