我的工作表中的许多单元格条目包含我想要删除的无关单词。我需要一个脚本来查找单列(在本例中为“B”)中的关键字并按顺序删除它们。目标是使单元格条目更短。
我的关键字是“Epic Artifactory DIY”、“Barn”、“Planks”、“Pack”、“优惠券:WTXPXZP”、“优惠券:FREESHIP50”、“优惠券:SPRING10”和“Wall”。
我找到了这个脚本,但它对我不起作用。
function fandr() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=ss.getActiveSheet();
var r=s.getDataRange();
var vlst=r.getValues();
var i,j,a,find,repl;
find="abc";
repl="xyz";
for (i in vlst) {
for (j in vlst[i]) {
a=vlst[i][j];
if (a==find) vlst[i][j]=repl;
}
}
r.setValues(vlst);
}
谢谢
最佳答案
下面是一些代码,它仅获取一列中的数据,并用空字符串替换所有内容(删除单词)。替换 Google 表格的一列中的单词。
function replaceInColumn() {
var arrayWordsToFind,dataInColumn,dataAsString,newString,
newData,outerArray,i,lastrow,L,sh,ss,tempArray,toFind;
arrayWordsToFind = [
"Epic Artifactory DIY", "Barn", "Planks", "Pack",
"Coupon: WTXPXZP", "Coupon: FREESHIP50", "Coupon: SPRING10", "Wall"
]
ss = SpreadsheetApp.getActiveSpreadsheet();
sh = ss.getSheetByName("Your Sheet Name Here");
lastrow = sh.getLastRow();//Get row number of last row
//sh.getRange(start row, start column, number of Rows, number of Columns)
dataInColumn = sh.getRange(2, 2, lastrow).getValues();
dataAsString = dataInColumn.toString();//Convert 2D array to a string
//Logger.log('dataAsString: ' + dataAsString)
newString = dataAsString;
L = arrayWordsToFind.length;//The number of words to find
for (i=0;i<L;i++) {//Loop once for every word to find
toFind = new RegExp(arrayWordsToFind[i], "g");//define new Reg Ex with word to find - replace globally
newString = newString.replace(toFind,"");//Delete all found words
}
//Logger.log('newString: ' + newString)
newData = newString.split(",");//Convert string to 1D array
outerArray = [];
L = newData.length;
for (i=0;i<L;i++) {
//Logger.log('i: ' + i)
//Logger.log('newData[i]: ' + newData[i])
tempArray = [];//Reset
tempArray.push(newData[i]);
outerArray.push(tempArray);//Create a new 2D data array
}
sh.getRange(2, 2, outerArray.length).setValues(outerArray);
}
关键词:全局查找替换列
关于replace - Google表格中的自动查找和替换脚本 - 删除某些特定单元格内容 - 全局替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43353463/