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



所以我有一个电子表格,用于记录一些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中断的所有内容。你知道我需要做什么才能让它运行多次吗?

我相信你的目标如下。

  • 您希望将Google电子表格中活动范围内的&quot;&#xA;的值转换为" "
  • 您希望使用OnEdit触发器运行脚本

修改点:

  • 在脚本中,for循环中的rdesc.replace(desFix[i]," ")使用相同的rdesc。由此,仅替换第二循环处的第一&#xA;。我认为这就是你问题的原因
  • 而且,我认为在for循环中使用setValue,处理成本会很高
  • 在你的情况下,我认为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(" "));
    }
    

参考文献:

  • 类文本查找器
  • google-apps-scropt
    • 我认为这些链接可能很有用

相关内容

最新更新