Google表格:导出到TSV

时间:2016-06-03 23:04:25

标签: google-sheets

我想创建一个自动将当前工作表导出到Google表格上的TSV文件的函数。是否可以使用Google Apps脚本导出到制表符分隔值文件,例如CSV格式的convertRangeToCsvFile?

1 个答案:

答案 0 :(得分:0)

我在Michael Derazon找到了csv文件的代码,并将其修改为tsv文件。我希望它有所帮助。

/*
 * script to export data in all sheets in the current spreadsheet as   individual csv files
 * files will be named according to the name of the sheet
 * author: Michael Derazon
*/

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var tsvMenuEntries = [{name: "export as TSV files", functionName:   "saveAstsv"}];
  ss.addMenu("tsv", tsvMenuEntries);
};

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

function convertRangeTotsvFile_(tsvFileName, sheet) {
  // get available data range in the spreadsheet
  var activeRange = sheet.getDataRange();
  try {
    var data = activeRange.getValues();
    var tsvFile = undefined;

    // loop through the data in the range and build a string with the tsv  data
    if (data.length > 1) {
      var tsv = "";
      for (var row = 0; row < data.length; row++) {
        for (var col = 0; col < data[row].length; col++) {
          if (data[row][col].toString().indexOf("\t") != -1) {
            data[row][col] = "\"" + data[row][col] + "\"";
          }
        }

        // join each row's columns
        // add a carriage return to end of each row, except for the last one
        if (row < data.length-1) {
          tsv += data[row].join("\t") + "\r\n";
        }
        else {
        tsv += data[row].join("\t");
             }
      }
      tsvFile = tsv;
    }
    return tsvFile;
  }
  catch(err) {
    Logger.log(err);
    Browser.msgBox(err);
  }
}