【问题标题】:Replace text in a function in Google Sheet (with script)替换 Google Sheet 中函数中的文本(使用脚本)
【发布时间】:2020-01-03 12:03:58
【问题描述】:

我正在尝试替换工作表中的字符串。它适用于我所有的文本值,但我的函数有问题。

我有导入的电话号码,但不幸的是,我得到了一个 =+ 放在它们前面。

所以值不是 555-8181,而是 =+555-8181。

当我尝试使用例如 Replace 时,它​​不起作用,可能是因为这些值存储为函数,而不是字符串,但我可能是错误的。

有什么提示吗?

我尝试过的示例:

function RemoveErrorInPhonenumber() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SheetWithNumbers");
  var range = sheet.getRange("Z:AG");
  var rngA = range.getValues();
  for(var i=1;i<rngA.length;i++)
  {
    rngA[i][0]=rngA[i][0].toString().replace("+", "");

  }
  range.setValues(rngA);
};

【问题讨论】:

    标签: javascript google-sheets


    【解决方案1】:

    range.getValues(); 替换为range.getFormulas();

    然后实施

    rngA[i][0]=rngA[i][0].toString().replace("+", "").replace("=", "");

    另外两个建议:

    • 如果要循环遍历所有列 Z:AG,则需要创建两个嵌套的 for loops
    for(var i=1;i<rngA.length;i++)  {
      for(var j=1;j<rngA.length;j++)  {
        rngA[i][j]=...
      }
    }
    
    • 不要循环遍历整个范围Z:AG - 这会使您的代码非常慢。相反,循环直到包含行的最后一个数据:

    var range = sheet.getRange("Z1:AG"+sheet.getLastRow());

    【讨论】:

    • 啊,getFormulas,一看就知道这么简单。非常感谢。
    【解决方案2】:

    【讨论】:

    • 执行此操作时出错。最简单的方法是将列的格式更改为字符串(见下文),但这不是最佳解决方案:SpreadsheetApp.getActiveSpreadsheet().getSheetByName("My Sheet").getRange("Z:Z").setNumberFormat( "@");
    猜你喜欢
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多