替换 Google 电子表格中字符串中的多次出现

Replace multiple occurrences in String on Google Spreadsheet

所以我制作了一个电子表格,用于记录某些 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);
  }  
}

但是当我需要它多次发生时,它只在第一次出现时起作用。我发现并尝试 implement/translate 到电子表格 api 的所有内容都中断了。知道我需要做些什么才能多次 运行 吗?

我相信你的目标如下。

  • 您想将 &quot;&#xA; 的值转换为 Google Spreadsheet.[=56 中活动范围内的 " " =]
  • 您想 运行 使用 OnEdit 触发器的脚本。

修改点:

  • 在您的脚本中,for 循环中的 rdesc.replace(desFix[i]," ") 使用了相同的 rdesc。这样,只有第 2 个循环的第 1 个 &#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()。这样,检查活动 sheet 中的所有单元格值。

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

参考文献: