Jam*_*d68 3 javascript arrays google-sheets google-apps-script
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.
Run Code Online (Sandbox Code Playgroud)
但我收到错误:“TypeError: var data = range.getValues(); 不是函数”
您能帮我解决我的菜鸟解决方案吗,或者教我更好的方法来解决这个问题?
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);
}
Run Code Online (Sandbox Code Playgroud)
从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)
);
}
Run Code Online (Sandbox Code Playgroud)
如果要替换部分单元格值,请修改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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3559 次 |
| 最近记录: |