Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Replace Google脚本-使用“查找并替换”;“在公式中搜索”;_Replace_Google Apps Script - Fatal编程技术网

Replace Google脚本-使用“查找并替换”;“在公式中搜索”;

Replace Google脚本-使用“查找并替换”;“在公式中搜索”;,replace,google-apps-script,Replace,Google Apps Script,我有一个谷歌表单,它从外部来源接收电话号码列表。电话号码以两种格式之一到达: 显示为12345678901的数字显示无误 显示为1(234)567-8901的数字将导致#错误 google sheets似乎正在读取第二组数字作为公式。当我点击错误单元格时,电话号码前面会有“=+”,如“=+1(234)567-8901”。我可以通过使用“在公式中搜索”复选框中的“查找并替换”来手动修复整个文档 查找:“=+” 替换:“” 有没有办法在谷歌应用程序脚本中实现自动化?我想运行此函数onEdit(),

我有一个谷歌表单,它从外部来源接收电话号码列表。电话号码以两种格式之一到达:

  • 显示为12345678901的数字显示无误
  • 显示为1(234)567-8901的数字将导致
    #错误
    google sheets似乎正在读取第二组数字作为公式。当我点击错误单元格时,电话号码前面会有“=+”,如“=+1(234)567-8901”。我可以通过使用“在公式中搜索”复选框中的“查找并替换”来手动修复整个文档

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

    有没有办法在谷歌应用程序脚本中实现自动化?我想运行此函数
    onEdit()
    ,以便
    出错电话号码是实时固定的。

    您可以使用电子表格公式删除()-字符,假设号码在单元格A1中,然后在另一个单元格中,您可以放置:

    =CONCATENATE(SPLIT(A1, "()-" ))
    
    这将删除()字符

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

    在数字列范围上方应用,以正确设置数字格式

    编辑

    这应该行得通,把“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");
    }
    
    函数onEdit(){
    var sheet=SpreadsheetApp.getActiveSheet();
    var range=sheet.getRange(“A1:A”+sheet.getLastRow());
    var data=range.getValues();
    var formulas=range.getFormulas();
    对于(var i=0;i
    很抱歉邮件延迟,我没有太多时间来处理这个问题。我在这里的语法方面做了很大的努力。我正在尝试将您的
    .replace(/[()-]/gi,”)
    应用到一个列,以便它替换所有
    #错误D列中的电话号码。此外,我尝试了标准查找和替换,它不会更改
    #错误中的任何数据单元格。
    #错误单元格仅在选择“在公式内搜索”时受影响。我不知道是否有可能在一个脚本中实现这一点。是的,你是对的。好的,那么您如何导入数字?在将数字发送到电子表格之前,也许有一种方法可以格式化。我在我的答案中的编辑应该就是您要找的。太棒了。好的,我现在必须问一下-有没有办法在数字固定后重新格式化(最好是1(123)456-7890格式)请注意,由于国家代码不同或根本没有国家代码,数字的长度可能不同。
    
    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");
    }