Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 GAS函数在从脚本调用时起作用,但抛出";。“替换不是一项功能”;当从Google Sheet调用时_Javascript_Regex_Google Apps Script_Replace - Fatal编程技术网

Javascript GAS函数在从脚本调用时起作用,但抛出";。“替换不是一项功能”;当从Google Sheet调用时

Javascript GAS函数在从脚本调用时起作用,但抛出";。“替换不是一项功能”;当从Google Sheet调用时,javascript,regex,google-apps-script,replace,Javascript,Regex,Google Apps Script,Replace,我改进了谷歌表单的功能,如下所示。此函数获取一个输入字符串,在fromList中查找每个值,如果找到,则将其替换为toList中的值。用户可以指定replace函数是否区分大小写 如果有人想看一下,这是我的公开文件: 我通过添加 fromDelimiters,这是一个数组,用户可以在其中指定哪些字符串被视为分隔符(在它成为默认的“,”,“;,”列表之前) toDelimiter,这是一个字符串,用户可以指定它是否要交换原始FromDelimiter 函数预引用(str){ 返回(str+''

我改进了谷歌表单的功能,如下所示。此函数获取一个输入字符串,在fromList中查找每个值,如果找到,则将其替换为toList中的值。用户可以指定replace函数是否区分大小写

如果有人想看一下,这是我的公开文件:

我通过添加

  • fromDelimiters,这是一个数组,用户可以在其中指定哪些字符串被视为分隔符(在它成为默认的“,”,“;,”列表之前)
  • toDelimiter,这是一个字符串,用户可以指定它是否要交换原始FromDelimiter
  • 函数预引用(str){
    返回(str+'').replace(/([\\.\+\*\?\[\^\]\$\(\)\{\\\\\\=\!\\\\\\\\\\;\:])/g,“\\$1”);
    }
    函数MultFindReplace(输入、fromList、toList、fromlimiters、toDelimiter、区分大小写){
    /*默认行为它不区分大小写*/
    if(区分大小写==未定义){
    区分大小写=错误;
    }
    /*如果源列表不是列表,则变为列表*/
    if(typeof fromList!=“对象”){
    fromList=[fromList];
    }
    /*如果要列出的对象不是列表,请变成列表*/
    if(toList的类型!=“对象”){
    toList=[toList];
    }
    /*强制输入为字符串*/
    var result=input.toString();
    if(toDelimiter!=未定义){
    var RareString=“AÔ;
    }否则{
    var RareString=“”;
    }
    /*使用最大大小进行迭代*/
    var biger=Math.max(fromList.length,toList.length);
    /*定义起始分隔符。通常用户应该输入一个包含他想要匹配的分隔符的数组*/
    if(fromDelimiters==未定义){
    fromDelimiters=[“,”,“,”;“,”“];//如果用户未指定任何分隔符,请检查所有默认分隔符
    }else if(typeof fromdimiters!=“object”){
    从DelimiTeS=(FROM DELIMITESER);和/或如果用户指定了某个字符串而不是一个数组,则将整个字符串视为定界符。
    }
    /*为每对from和to单词跑步*/
    对于(变量i=0;iresult=result.replace(新的RegExp(“\w*”)首先
    未定义"
    您有很多对replace函数的调用,并且使用了很多regex,因此我怀疑由于数据的不一致性,您将来会遇到很多类似的问题。我建议您进行内部检查,以确保结果在整个脚本中都是定义的,否则您将永远与此问题作斗争。它不会it’不起作用,因为在这种情况下,
    toValue
    是一个数组,它没有
    。replace
    方法。如果你解释一下你想实现什么,我们可以帮你一点忙。你好@Cooper谢谢你的帮助。
    未定义的
    在原始函数中有,它收到了很多的升级票。它对我很好,所以我从未更改过它。关于构建检查,我会尝试。但这与我提到的问题无关。我的问题是,我在GAS环境中运行了这个函数,它工作了。但是当我在Google Sheet环境中运行相同的函数时(使用相同的硬编码输入,而不是从单元格中获取它们),它不再工作了。您好@WiktorStribiżew tks,请发表评论。我用我的最终目标编辑了我的问题。您能解释一下
    toValue
    是一个数组吗?在这行:
    var toValue=toList[(I%(toList.length))]
    它以字符串的形式返回。此外,这并不能解释为什么从GAS works内部以本机方式运行该函数,而从Google Sheet以相同的硬编码输入运行该函数却不能。