首页 > 解决方案 > 如何将不带标题的 CSV 文件中的数据附加到 Google 表格中

问题描述

我已经设法检索数据并将其附加到我的工作表中,但我还没有弄清楚如何排除标题行。

function importFromCSV() {
  var fileName = Browser.inputBox("Ingrese archivo en Drive a importar (ej. datosBaby.csv):");
   
  var searchTerm = "title = '"+fileName+"'";
   
  // search for our file
  var files = DriveApp.searchFiles(searchTerm)
  var csvFile = "";
   
  // Loop through the results
  while (files.hasNext()) {
    var file = files.next();
    // assuming the first file we find is the one we want
    if (file.getName() == fileName) {
      // get file as a string
      csvFile = file.getBlob().getDataAsString();
      break;
    }
  }
  // parseCsv returns a [][] array and writes to the sheet
  var csvData = Utilities.parseCsv(csvFile);
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  // data to a sheet
  sheet.getRange(sheet.getLastRow()+1, 1, csvData.length, csvData.length).setValues(csvData);
  
  //sheet.getRange(1, 1, csvData.length, csvData[1].length).setValues(csvData); <-- This one places txt a A1
  //sheet.appendRow(csvData[1]); <-- This one  does not work
}

以下是正在发生的事情的示例: 重复 CSV 导入的标头

感谢任何可以为我指明正确方向的人。我是这方面的初学者。

标签: javascriptarraysgoogle-apps-scriptjavascript-objectscsv-import

解决方案


拼接方法是正确的,但在上面的解决方案中,它返回标头的值,并且不会删除标头。删除表头需要的是使用 splice 函数并告诉它从第二行开始直到结束。这看起来像这样:

var csvDataNoHeader = csvData.splice(1,csvData.length-1)

这告诉函数从数组的第二个元素开始并选择之后的所有元素,负 1 表示删除标题。


推荐阅读