Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换Google电子表格上字符串中的多个匹配项_Javascript_Google Apps Script_Google Sheets_Google Sheets Api - Fatal编程技术网

Javascript 替换Google电子表格上字符串中的多个匹配项

Javascript 替换Google电子表格上字符串中的多个匹配项,javascript,google-apps-script,google-sheets,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Google Sheets Api,因此,我准备了一个电子表格,用于记录一些python文件中的函数描述。TLDR由于文件留下的混乱,这些描述很难阅读 所以我的解决方案是: function onEdit(e) { const desFix = ['"', '
']; let activeSheet = e.source.getActiveSheet(); let range = e.range; const desc = range.getValue(); const rd

因此,我准备了一个电子表格,用于记录一些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);
  }  
}
函数onEdit(e){
常量desFix=['”,'
;'];
让activeSheet=e.source.getActiveSheet();
设范围=e.range;
const desc=range.getValue();
常量rdesc=desc.toString();

我相信你的目标如下

  • 您希望将
    的值转换为Google电子表格中活动范围内的
  • 您希望使用OnEdit触发器运行脚本
修改点:
  • 在您的脚本中,for循环中的
    rdesc.replace(desFix[i],“”)
    使用了相同的
    rdesc
    。这样,只有第二个循环中的第一个
    和#xA;
    被替换。我认为这就是您出现问题的原因
  • 而且,我认为在for循环中使用
    setValue
    ,过程成本会很高
  • 在你的情况下,我认为TextFinder可能是合适的
因此,在这个答案中,我建议您使用TextFinder修改您的脚本

修改脚本:
  • 例如,当您使用此选项时,请编辑一个单元格。通过此选项,脚本将由OneEdit触发器运行,并且单元格中的值中的
    将替换为
注:
  • 如果要使用脚本编辑器运行脚本,还可以使用以下脚本。使用以下脚本时,请在脚本编辑器中运行
    myFunction()
    。这样,活动工作表中的所有单元格值都将被检查

      function myFunction() {
        const desFix = ['&quot;', '&#xA;'];
        const sheet = SpreadsheetApp.getActiveSheet();
        desFix.forEach(f => sheet.createTextFinder(f).matchCase(true).replaceAllWith(" "));
      }
    
参考资料:
    • 我认为这些链接可能有用

@Acha欢迎。谢谢你让我知道。我很高兴你的问题得到了解决。如果你的问题得到解决,请按下“接受”按钮。与你有相同问题的其他人也可以将你的问题作为可以解决的问题。我认为你的问题和解决方案对他们很有用。如果你没有找到按钮,请随便告诉我。
  function myFunction() {
    const desFix = ['&quot;', '&#xA;'];
    const sheet = SpreadsheetApp.getActiveSheet();
    desFix.forEach(f => sheet.createTextFinder(f).matchCase(true).replaceAllWith(" "));
  }