Google脚本 - 使用“在公式内搜索”查找和替换

时间:2016-11-16 22:35:13

标签: replace google-apps-script

我有一张google工作表,可以从外部来源收到电话号码列表。电话号码以两种格式之一到达:

  1. 看到显示为12345678901的数字没有错误。
  2. 显示为1(234)567-8901的数字会产生#ERROR!
  3. 似乎谷歌工作表正在读取第二组数字作为公式。当我点击错误单元格时,电话号码前面带有“= +”,如“= + 1(234)567-8901”。我可以通过使用查找和替换选中“在公式内搜索”来手动修复整个文档。

    查找:“= +”
    替换:“”

    Find/Replace "Search Within Formulas"

    有没有办法在谷歌应用程序脚本中自动执行此操作?我想运行此功能onEdit(),以便#ERROR!电话号码实时修复。

1 个答案:

答案 0 :(得分:0)

您可以使用电子表格公式删除() - 字符,让我们说数字在单元格A1中,然后在另一个单元格中放置:

=CONCATENATE(SPLIT(A1, "()-" ))

将删除() - 字符。

如果您想使用脚本执行此操作,则可以使用replace删除() -

.replace(/[()-]/gi, "")

在数字列范围之上应用以正确格式化数字。

修改

这应该有效,改变" A1:A"到你的专栏

function onEdit(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("A1:A" + sheet.getLastRow());
  var data = range.getValues();
  var formulas = range.getFormulas();
  for (var i=0;i< formulas.length;i++) {
    if(typeof formulas[i] !== "undefined" && formulas[i] != ""){
      formulas[i][0] = formulas[i][0].replace(/[=()+-]/gi, "");
      data[i][0] = formulas[i][0].toString();
    }
  }
 range.setValues(data).setNumberFormat("0");
}