Warm tip: This article is reproduced from serverfault.com, please click

javascript-替换Google Spreadsheet中String中的多次出现

(javascript - Replace multiple occurrences in String on Google Spreadsheet)

发布于 2020-11-28 02:14:53

因此,我准备了一个电子表格,用于记录在某些python文件中找到的功能的描述。TLDR这些描述很难阅读,原因是文件遗留下来的混乱情况。

所以我的解决方案是:

function onEdit(e) {

  const desFix = ['"', '
'];
  let activeSheet = e.source.getActiveSheet();
  let range = e.range;
  const desc = range.getValue();
  const rdesc = desc.toString();
  
  for (let i=0; i<desFix.length; i++){
  
    const rep = rdesc.replace(desFix[i]," ");
    range.setValue(rep);
  }  
}

但是它仅在我需要多次发生时才在第一次出现时起作用。我发现并尝试实现/转换为电子表格api中断的所有内容。我需要做什么才能使其多次运行的任何想法?

Questioner
Acha
Viewed
1
Tanaike 2020-11-28 15:04:37

我相信你的目标如下。

  • 你要的值转换&quot;,并&#xA;" "在活动范围在谷歌电子表格。
  • 你想使用OnEdit触发器运行脚本。

修改要点:

  • 在你的脚本中,for循环中rdesc使用的也是相同的rdesc.replace(desFix[i]," ")这样,仅&#xA;替换了第二个循环中的第一个循环。我认为这是你遇到问题的原因。
  • 而且,我认为将setValue其用于for循环中,过程成本会很高。
  • 对于你的情况,我认为TextFinder可能合适。

因此,在这个答案中,我建议使用TextFinder修改你的脚本。使用TextFinder修改脚本后,脚本将如下所示。

修改后的脚本:

function onEdit(e) {
  const desFix = ['&quot;', '&#xA;'];
  desFix.forEach(f => e.range.createTextFinder(f).matchCase(true).replaceAllWith(" "));
}
  • 例如,使用此功能时,请编辑一个单元格。由此,该脚本由OnEdit触发和运行&quot;,并&#xA;在单元格中的数值替换到" "

笔记:

  • 当你想使用脚本编辑器运行脚本时,也可以使用以下脚本。使用以下脚本时,请myFunction()在脚本编辑器上运行这样,将检查活动工作表中的所有单元格值。

      function myFunction() {
        const desFix = ['&quot;', '&#xA;'];
        const sheet = SpreadsheetApp.getActiveSheet();
        desFix.forEach(f => sheet.createTextFinder(f).matchCase(true).replaceAllWith(" "));
      }
    

参考: