提问者:小点点

从csv输出中删除空数组


我正在使用这个脚本下载谷歌电子表格中的所有选项卡。

当我输出下载的行时,它包括空白数组:

输出:数据1:[[id,name],[1.0,John],[2.0,Smith],[,],[,],[,],[,],[,],[,],[,],[,],[,]

function convertRangeToCsvFile_(csvFileName, sheet) {
  // get available data range in the spreadsheet
  var activeRange = sheet.getDataRange();
  try {
    var data = activeRange.getValues();
    Logger.log('Data 1: %s', data); <----- Logging here

我怎样才能从最终下载的CSV中清除这一点呢?


共2个答案

匿名用户

你可以试试这个。 此代码筛选并返回子数组长度大于1的数组

var data = activeRange.getValues();
const filteredData = data.filter(item => item.length > 1);

匿名用户

问题:为什么使用%s来记录它? 如果您要记录的实际上是一个数组,那么它可能会导致一些问题。

在您展示的脚本中,它们似乎在行和列之间执行某种筛选,并在稍后将其解析为字符串,我建议您尝试如下所示:

const data = activeRange.getValues();
const filteredData = data.filter((item) => {
  if (!Array.isArray(item)){
    return false
  }
  for (var column = 0; column < item.length; column++) {
    if(item[column] === undefined) {
      return false;
    }
  }
  return true;
});

然后对字符串或需要传递到csv文件的任何东西应用正确的解析。