Google Apps Script写入Sheet时如何保留正则中的'\s'
解决Google Apps Script填充公式时
\s丢失反斜杠的问题 问题原因
在JavaScript字符串里,反斜杠是转义字符。你写的"\s"会被JS解析:因为\s不是JS标准的转义序列(像\n、\"这种才是),所以反斜杠会被直接丢弃,最终传入Google Sheets的公式里就只剩"s",导致REGEXREPLACE匹配字母s而非空白字符。
解决方法
要在最终的公式字符串里保留单个反斜杠,你需要在JS代码里用两个反斜杠来表示(\\),这样JS会解析出一个反斜杠传入Sheet。
修改后的代码
把你代码中所有的"\s"替换为"\\s","-|\s"替换为"-|\\s",修正后的代码片段如下:
descriptionSheet.appendRow(['Brand', 'Product Type', 'Product Name', 'Size', 'Colour', 'Condition', '', '=VLOOKUP(D2&" "&A2&" "&B2,Measurements!A:C,2,FALSE)', '=VLOOKUP(D2&" "&A2&" "&B2,Measurements!A:C,3,FALSE)', '=A2&" "&IF(C2="","",C2&" ")&B2&"\n\n"&D2&"\n"&E2&"\n\n"&F2&" condition - "&IF(G2="","No rips, holes or stains!",G2)&"\n\nMeasurements\n⦿ Pit to pit: "&H2&" inch\n⦿ Shoulder hem to bottom: "&I2&" inch\n\nVerified Depop Top Seller! Shop with confidence.\n\nFree Shipping on bundles.\nSame day dispatch on request.\n\n#"®EXREPLACE(A2,"\\s","")&" #"®EXREPLACE(A2&B2,"-|\\s","")&" #"®EXREPLACE(K2,"-|\\s","")', '=CONCATENATE(A2," ",B2," ",C2)', '=REGEXREPLACE(A2,"[^A-ZÀ-Ö]","")&"-"®EXREPLACE(K2,"[^A-Z0-9]","")&"-"&D2&"-"&SUBSTITUTE(UPPER(JOIN("",ArrayFormula(left(split(F2," "),1)))),"-","")&"-"&UPPER(LEFT(E2,3))' ]);
关于你尝试的方法失效说明
String.raw:这个方法只对ES6的模板字符串(用`包裹)生效,你用的是普通单/双引号字符串,所以不起作用。/\s/g:这是JavaScript的正则表达式对象,但appendRow需要传入的是字符串形式的公式,直接传正则对象会被转成字符串"/\\s/g",不符合Sheet公式的语法要求。
内容的提问来源于stack exchange,提问作者Street Garms
相关产品推荐
相关产品推荐

