我在GAS脚本中遇到JS .split()
方法的问题。我将其他Google工作表的标题复制并粘贴为变量headers
(通常的方式是复制和粘贴)。此粘贴选项包含一些空和未定义的元素。我需要在数组中转换这些元素。所以我拆分它并使用.filter
来清理空元素。但是,当我运行脚本时,var arrayHeaders
仍然等于headers
,就像.split(" ")
没有做任何更改一样,这样:
这是我的代码:
var headers = "STUDENT Parentage GRADE YEAR DATE GUIDE";
var arrayHeaders = headers.split(" ");
// arrayHeaders = arrayHeaders.filter(function(n){return n});
Logger.log("headers = " + headers);
Logger.log("arrayHeaders = " + arrayHeaders);
Logger.log("arrayHeaders length " + arrayHeaders.length);
for (var i = 0; i < arrayHeaders.length; i++){
var NOME_Cell = sheet.getRange(1, i +1);
Logger.log("NOME_Cell" + NOME_Cell);
Logger.log("arrayHeaders[i]" + arrayHeaders[i]);
NOME_Cell.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial");
}
如果我在粘贴字符串并再次按空格后删除所有空格,那么.split(" ")
效果很好。
在提出这个问题之前,我读过this other one,但我仍然坚持这里出了问题。
提前感谢您的帮助!
答案 0 :(得分:1)
我很确定你的header变量不是String。试试这个:
var arrayHeaders = headers.toString().split(/[\s\t]+/);
答案 1 :(得分:0)
当您执行split(“”)时,请确保字符串中的单词与传递给.split()方法的相同内容分开。 您的arrayHeaders与标题相同。
var headers = "STUDENT Parentage GRADE YEAR DATE GUIDE";
var arrayHeaders = headers.split(" ");
// arrayHeaders = arrayHeaders.filter(function(n){return n});
Logger.log("headers = " + headers);
Logger.log("arrayHeaders = " + arrayHeaders);
Logger.log("arrayHeaders length " + arrayHeaders.length);
for (var i = 0; i < arrayHeaders.length; i++){
var NOME_Cell = sheet.getRange(1, i +1);
Logger.log("NOME_Cell" + NOME_Cell);
Logger.log("arrayHeaders[i]" + arrayHeaders[i]);
NOME_Cell.setValue(arrayHeaders[i]).setBackgroundRGB(34, 139, 34).setFontSize(font_size).setFontWeight("bold").setFontFamily("Arial");
}
我认为,标题的分离并不相同。确保标题的分隔是一个空格或两个空格或三个空格。