将数据从图纸复制到文件时无法识别0数字

时间:2018-08-22 15:16:24

标签: javascript scripting

我正在尝试使用Google表格中的信息创建自己的CSV文件。信息可以正确复制,但是,只要单元格中有0,它就会被忽略,并且我的CSV文件中出现空白。有什么建议么?下面的代码。

function saveAsCSV() {
var filename = "trainingImport"; // CSV file name 
var folder = "1vzTFeLwwR35XluyE39Uk9mzbLVJHE3XB"; // Folder ID
var sprdSheet = SpreadsheetApp.getActiveSpreadsheet();
var outPut = sprdSheet.getSheetByName("Output");
var range = outPut.getDataRange();
var values = range.getValues();
var csv = "";

for (var i = 0; i < values.length; i++) {
  var row = "";   
  for (var j = 0; j < values.length[i]; j++) {
    if (values[i][j]) {
      row = row + values[i][j];
    }
    if (outPut.getRange((i+1),(j+2)).isBlank()) {
      break;
    }
    row = row + ",";
  }    
  csv += row + " \n";
}

var url = DriveApp.getFolderById(folder)
          .createFile(filename, csv, MimeType.CSV)
          .getDownloadUrl()
          .replace("?e=download&gd=true","");
return url;
}

1 个答案:

答案 0 :(得分:0)

问题出在内部if循环中的for语句中:

if (values[i][j]) {
  row = row + values[i][j];
}

如果values[i][j]为0,则因为0为虚假,所以该语句为假。

这意味着,当转换为布尔值时,0的作用类似于文字false,这也适用于空字符串nullundefinedNaN

如果将其更改为

if (values[i][j] || values[i][j] === 0) {
  row = row + values[i][j];
}

0将添加到该行。