Google表格导出特定范围的CSV文件

时间:2018-02-02 10:22:35

标签: csv google-sheets google-sheets-api

下午好,

我尝试通过脚本代码将表提取到csv文件中。在互联网上,我只能找到如何提取完整的工作表,但我想创建一个csv仅仅某个范围“B8:K500”

代码创建一个CSV文件,但只有一个单元格并且说“未定义”。没有其他的。不是我想要创建的表格中的数字。

convertRangeToCsvFile_(csvFileName, sheet)中似乎有些错误。我是编码的新手。只是尝试应用我在网上找到的东西。

function ExportCSV() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var range = ss.getSheets()[0].getRange("B8:K500");
   SpreadsheetApp.setActiveRange(range);

  // create a folder from the name of the spreadsheet
  var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv_' + new Date().getTime());
  for (var i = 0 ; i < sheets.length ; i++) {
    var sheet = sheets[i];
    // append ".csv" extension to the sheet name
    fileName = sheet.getName() + ".csv";
    // convert all available sheet data to csv format
    var csvFile = convertRangeToCsvFile_(fileName, sheet);
    // create a file in the Docs List with the given name and the csv data
    folder.createFile(fileName, csvFile);
  }
  Browser.msgBox('Files are waiting in a folder named ' + folder.getName());
}


function convertRangeToCsvFile_(csvFileName, sheet) {  
   // get available data range in the spreadsheet
  var range = sheet.getRange("B8:K500"); 
  var values = SpreadsheetApp.getActiveSheet().getRange("B8:K500").getValues();

  var csvFile = values;
  DriveApp.createFile("mycsv.csv", csvFile);

  }

1 个答案:

答案 0 :(得分:0)

你在这里使用的.getValues函数......

var values = SpreadsheetApp.getActiveSheet().getRange("B8:K500").getValues();

...将在数组中返回一个数组,内部数组是行,外部数组就是这样的列:

[["A1","B1","C1"],["A2","B2","C2"],["A3","B3","C3"]]

其中&#34; A1&#34;,&#34; B1&#34;等等是单元格A1,B1 ......

中的任何值

要删除括号并用逗号和分号/新行替换它们/您正在使用的其他分隔符,您可以使用某种for循环。

有多种方法。虽然这可能不是最有效的方法,但我可能会这样做:

var row=0
var col=0
var csvFile=""
for (row=0; row<values.length; row++) {
  for (col=0; col<values[0].length; col++) {
    //insert comma just before the values if it's not the first value
    if (col != 0) {
      csvFile+=","
    }
    //get value at column and row and add it to csvFile
    csvFile+=values[row][col]
  }
  //insert semicolons (or whatever you want) between whole rows
  csvFile+=";"
}