我正在尝试修改以下Google App脚本以将电话号码从
11位到10位带连字符的数字。因此,脚本需要删除前导1并添加连字符。
例如: 19734776262转973-477-6262
以下脚本做了相反的事情。在Formatting phone number in place in sheet cell上找到
function myFunction() {
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const range = sheet.getRange(2, 4, sheet.getLastRow() - 1, 1); // Column "D"
const values = range.getValues();
const converted = values.map(([v]) => {
if (/\d{3}-\d{3}-\d{4}/.test(v)) {
let temp = v.replace(/-/g, "");
console.log(v.charAt(0))
const tempV = v.charAt(0) != 1 ? 1 + temp : temp;
return [tempV.length == 11 ? tempV : v];
}
return [v];
});
range.setValues(converted);
}
发布于 2020-09-15 04:52:05
如果一个公式解决方案对你有效,这里是我的方法,否则请原谅我的误解:
=CONCATENATE(left(right(A1,len(A1)-1),3),"-",mid(right(A1,len(A1)-1),4,3),"-",right(A1,4))
发布于 2020-09-15 12:46:32
使用regex
=RIGHT(REGEXREPLACE(A2,"(?:^1)?(\d{3})","-$1"),12)
REGEXREPLACE
下面的pattern- `(?:^1)?` - A leading `1` (optional)- non capturing group
- `\d{3}` - exactly 3 occurrences of a `d`igit
- `(...)` - capture group `$1`
将
-$1
前导连字符-
和捕获的组RIGHT
可准确获取12个最正确的字符发布于 2020-09-16 04:47:29
如果你真的想要一个脚本,而不是一个公式,这个脚本就可以做到。(我修改了您提供的内容。)
function myFunction()
{
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const range = sheet.getRange('D:D'); // Column "D"
const values = range.getValues();
const converted = values.map(([v]) => {
if (/^\d{11}$/.test(v))
{
let sv = v.toString();
return [[sv.substr(1, 3), sv.substr(4, 3), sv.substr(7)].join('-')];
}
return [v];
});
range.setValues(converted);
}
它只是从输入中取取子字符串块,并将它们连接在一起。
https://stackoverflow.com/questions/63890406
复制相似问题