javascript - 问:谷歌表格脚本改变列,所以在数字前面添加一个主题标签
问题描述
我正在寻找帮助/脚本,它在几个列(例如:A10:D200)中替换/附加一个数字(1-999)和一个额外的标签(#1 - #999)。
之前的例子:
一个 | 乙 | C | D |
---|---|---|---|
123 | 456 | 31 | 5 |
6 | 888 | 123 | 9 |
92 | 55 | 3 | 791 |
11 | 2 | 456 | 712 |
它应该看起来如何:
一个 | 乙 | C | D |
---|---|---|---|
#123 | #456 | #31 | #5 |
#6 | 第888章 | #123 | #9 |
#92 | #55 | #3 | #791 |
#11 | #2 | #456 | #712 |
等等
function onEdit() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Stewarding - Imola Q")
var lastRow = sheet.getLastRow()
var lastColumn = sheet.getLastColumn()
var range = sheet.getRange(10, 1, lastRow, 4)
var to_replace = [0-9];
var replace_with = "#";
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].replace(to_replace, replace_with +oldValue);
if (oldValue!=newValue)
{
cellsChanged++;
data[r][i] = newValue;
}
}
}
range.setValues(data);
//Logger.log(data);
}
提前感谢您的帮助
解决方案
或者,它可以这样做:
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet(); // your sheet
const range = sheet.getRange('A10:D200'); // your range
// find all digits and put # before
range.createTextFinder('(\\d+)').useRegularExpression(true).replaceAllWith('#$1');
}
为了防止##
重新运行 scipt 后出现双倍,最后一行可能是这样的:
range.createTextFinder('^\\D*(\\d+)').useRegularExpression(true).replaceAllWith('#$1');
它将#
在范围的每个单元格的开头更改数字之前的任意数量的任何非数字字符。