如何解决问:Google Sheet Script 用于更改列,以便在数字前添加一个主题标签
我正在寻找帮助/脚本,它在几个列(例如:A10:D200)中替换/附加一个数字(1-999)和一个额外的标签(#1 - #999)。
之前的示例:
A | B | C | D |
---|---|---|---|
123 | 456 | 31 | 5 |
6 | 888 | 123 | 9 |
92 | 55 | 3 | 791 |
11 | 2 | 456 | 712 |
它应该是什么样子:
A | B | 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');
它将更改数字之前的任意数量的任何非数字字符,并在该范围的每个单元格的开头添加一个 #
。
newValue = '#' + String(data[r][i]);
行不通?
如果您有一些不想要 '#'
的条件,只需添加一个 if 语句
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。