如何忽略getRange()的空单元格值.getValues()

时间:2017-06-16 01:13:49

标签: google-apps-script google-sheets

我可以使用getValues()获取范围值,并通过在Google App Script中声明以下变量将其放入字符串中

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Test"); 
var range_input = ss.getRange("A1:A").getValues();

然而,我意识到我的字符串中有很多逗号可能来自所有空调。

例如,如果值遵循

================
Spreadsheet("Test") Values

A1=abc
A2=def
A3=    
A4=
A5=
A6=uvw
A7=xyz
================

如果我做msgBox,它会得到类似下面的内容。

Browser.msgBox(range_input) // results = abc,def,,,,uvw,xyz,,,,,,,,,,,

有没有办法删除尾随的逗号,所以我得到类似下面的内容? (即忽略空单元格)

Browser.msgBox(range_input) // results = abc,def,uvw,xyz

3 个答案:

答案 0 :(得分:15)

您也可以使用filter()

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Test"); 
var range_input = ss.getRange("A1:A").getValues();
var filtered_input = range_input.filter(String);

答案 1 :(得分:9)

这个样本怎么样?

示例:

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("Test"); 
var range_input = ss.getRange("A1:A").getValues();

var result = [i for each (i in range_input)if (isNaN(i))];
Browser.msgBox(result)

enter image description here

答案 2 :(得分:1)

未经过效率测试,但只需删除多个,,就可以使用正则表达式:

const a=[['abc'],['def'],[''],[''],[''],['xyz'],['']];//simulate getValues()
const out =  a.join(',').replace(/,+(?=,)|,*$/g,'') //'abc,def,xyz'
const out2 = a.join('«').replace(/«+$/,'').split(/«+/) //flattened

console.log({out, out2})