【问题标题】:Google Sheets replaceText() EquivalentGoogle 表格 replaceText() 等效项
【发布时间】:2014-07-30 14:01:44
【问题描述】:

在 Google 表格中,我有一列单元格,如下例所示,其中包含有用的数据 - 以及来自其来源的一些垃圾剩余物。基本上我正在尝试编写一个脚本来删除“tag×”以及它之后的任何内容。我只对保留名称感兴趣

亚当史密斯标签×生产×​​
比尔琼斯标签×销售×
克里斯裤子标签×仓库×
戴夫瓦特标签×手机×

我可以在 Excel 中使用
Selection.Replace What:="tag×*", Replacement:=""

遍历列

但在我的新办公室,我们使用的是 Google 表格。我想我可以用 replaceText() 来做到这一点,但该功能似乎只在文档服务的文本类上可用。我浏览了电子表格应用程序类,但找不到任何东西。有谁知道电子表格应用程序中是否存在这种功能,或者我如何处理这种列?

【问题讨论】:

    标签: scripting google-apps-script google-sheets google-docs


    【解决方案1】:

    您将不得不使用字符串操作。

    将列中的所有数据放入一个数组中,并逐行迭代进行字符串缩减。 代码如下

    function removeTags(){
      var column = 1
      var sh = SpreadsheetApp.getActive().getActiveSheet();
      var data = sh.getRange(1,column,sh.getLastRow(),1).getValues();
      for(var n in data){
        if(data[n][0]==''){continue};// if cell empty then continue
        var str = data[n][0].toString();
        data[n][0]= str.substring(0,str.indexOf('tag'));//remove everything after "tag"
      }
      sh.getRange(1,column,sh.getLastRow(),1).setValues(data);// update sheet with new data
    }
    

    【讨论】:

    • 我已经插入了代码,它运行良好。 substring() 是我需要的确切功能。我一直无法在developers.google 中找到相关文档。非常感谢你说清楚。
    • 很高兴听到它;)不要忘记接受答案。
    • 这是纯 JavaScript,您可以在互联网上找到所有 JS 方法...例如 w3school。
    • 哇,我不知道您可以如此轻松地从 Google Apps 脚本中调用 JS 函数,再次感谢 :)
    【解决方案2】:

    并不花哨,但假设它们的结构都像您演示的那样,可以通过两个函数来完成。假设您的数据在 A2 列中,而这些函数分别在 b2 和 c2 中。一个工作示例是here

    =find("标签×",a2) =left(a2, b2-2)

    【讨论】:

      【解决方案3】:

      使用此公式创建一列:

      =left(A1,find("tag×",A1)-2)

      在包含原始数据的列旁边向下拖动。

      Screenshot here

      【讨论】:

        【解决方案4】:

        REGEXEXTRACT 是另一种选择,试试这个

        =Arrayformula(iferror(REGEXEXTRACT(A2:A,"(^\w+\ \w+)")))

        REGEXEXTRACT

        【讨论】:

          猜你喜欢
          • 2023-03-14
          • 2019-09-20
          • 1970-01-01
          • 2013-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多