[英]Google App Script: Find & Replace for specific columns
to_replace
字符串。
to_replace
替换为replace_with
。to_replace
替换为to_replace
// 这个不需要,而且会出问题(它替换了所有的公式,并用字符串替换)。 我希望脚本只替换与to_replace
匹配的单元格,而忽略所有其他单元格。
通过使用此处的脚本从数组中删除列 C 来排除论坛中的特定列。 (仅在 B 和 D 列中查找和替换)。
这是我在我的当前脚本中添加的修改后的代码...
const range = sheet.getRange('B2:D'+lastRow).getValues();
range.forEach(a => a.splice(1, 1)); //removes column C.
但我收到错误:“TypeError:var data = range.getValues(); is not a function”
你能帮我解决我的菜鸟解决方案,或者教我更好的方法来解决这个问题吗?
function findAndReplace(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var lastRow = sheet.getLastRow()
var lastColumn = sheet.getLastColumn()
// var range = sheet.getRange(1, 1, lastRow, lastColumn) //REMOVED - Searches all columns.
const range = sheet.getRange('B2:D'+lastRow).getValues(); //ADDED - Searches only B & D
range.forEach(a => a.splice(1, 1)); //ADDED - Searches only B & D
var to_replace = "TextToFind";
var replace_with = ""; //Leave blank to delete Text, or enter text in quotes to add string.
var data = range.getValues();
var oldValue="";
var newValue="";
var cellsChanged = 0;
for (var r=0; r<data.length; r++) {
for (var i=0; i<data[r].length; i++) {
oldValue = data[r][i];
newValue = data[r][i].toString().replace(to_replace, replace_with);
if (oldValue!=newValue)
{
cellsChanged++;
data[r][i] = newValue;
}
}
}
range.setValues(data);
}
从teach me a better way to solve this problem
,在你的情况下,我认为当使用 TextFinder 时,处理成本可能会降低。 当 TextFinder 用于实现您的目标时,它变成如下。
function myFunction() {
var to_replace = "TextToFind";
var replace_with = ""; //Leave blank to delete Text, or enter text in quotes to add string.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var lastRow = sheet.getLastRow();
var ranges = ['B2:B' + lastRow, 'D2:D' + lastRow];
sheet.getRangeList(ranges).getRanges().forEach(r =>
r.createTextFinder(to_replace).matchEntireCell(true).replaceAllWith(replace_with)
);
}
如果要替换单元格值的部分,请将r.createTextFinder(to_replace).matchEntireCell(true).replaceAllWith(replace_with)
修改为r.createTextFinder(to_replace).replaceAllWith(replace_with)
作为附加修改,如果你的脚本被修改了,那么下面的修改呢?
function findAndReplace() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); var lastRow = sheet.getLastRow() var range = sheet.getRange('B2:D' + lastRow); var data = range.getValues(); var to_replace = "TextToFind"; var replace_with = ""; //Leave blank to delete Text, or enter text in quotes to add string. for (var r = 0; r < data.length; r++) { for (var i = 0; i < data[r].length; i++) { var value = data[r][i].toString(); if (i.= 1 && value.includes(to_replace)) { data[r][i] = data[r][i],replace(to_replace; replace_with). } } } range;setValues(data); }
如果我想替换,“to_replace”的正确输入是什么
\
我试过了
var to_replace = "\\";
但没有工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.