首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Google App脚本设置工作表中电话号码的格式,从1xxxxxxxxxx到xxx-xxx-xxxx

使用Google App脚本设置工作表中电话号码的格式,从1xxxxxxxxxx到xxx-xxx-xxxx
EN

Stack Overflow用户
提问于 2020-09-15 03:02:25
回答 3查看 411关注 0票数 2

我正在尝试修改以下Google App脚本以将电话号码从

11位到10位带连字符的数字。因此,脚本需要删除前导1并添加连字符。

例如: 19734776262转973-477-6262

以下脚本做了相反的事情。在Formatting phone number in place in sheet cell上找到

代码语言:javascript
运行
复制
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);
}
EN

回答 3

Stack Overflow用户

发布于 2020-09-15 04:52:05

如果一个公式解决方案对你有效,这里是我的方法,否则请原谅我的误解:

代码语言:javascript
运行
复制
=CONCATENATE(left(right(A1,len(A1)-1),3),"-",mid(right(A1,len(A1)-1),4,3),"-",right(A1,4))

票数 2
EN

Stack Overflow用户

发布于 2020-09-15 12:46:32

使用regex

代码语言:javascript
运行
复制
=RIGHT(REGEXREPLACE(A2,"(?:^1)?(\d{3})","-$1"),12)

  • REGEXREPLACE下面的pattern

代码语言:javascript
运行
复制
- `(?:^1)?` - A leading `1` (optional)- non capturing group
- `\d{3}` - exactly 3 occurrences of a `d`igit
- `(...)` - capture group `$1`

  • 替换为-$1前导连字符-和捕获的组

  • RIGHT可准确获取12个最正确的字符
票数 2
EN

Stack Overflow用户

发布于 2020-09-16 04:47:29

如果你真的想要一个脚本,而不是一个公式,这个脚本就可以做到。(我修改了您提供的内容。)

代码语言:javascript
运行
复制
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);
}

它只是从输入中取取子字符串块,并将它们连接在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63890406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档