Xuất tất cả các trang tính trong bảng tính sang csv trong Google Apps


Câu trả lời:


3

Không thể tìm thấy bất kỳ cách xây dựng nào để làm điều đó nên tôi đã viết một tập lệnh để sử dụng trong Google Sheets

Chỉ cần dán nó vào trình chỉnh sửa tập lệnh và chạy

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}];
  ss.addMenu("csv", csvMenuEntries);
};

function saveAsCSV() {
  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,'_') + '_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 waitig in a folder named ' + folder.getName());
}

function convertRangeToCsvFile_(csvFileName, sheet) {
  // get available data range in the spreadsheet
  var activeRange = sheet.getDataRange();
  try {
    var data = activeRange.getValues();
    var csvFile = undefined;

    // loop through the data in the range and build a string with the csv data
    if (data.length > 1) {
      var csv = "";
      for (var row = 0; row < data.length; row++) {
        for (var col = 0; col < data[row].length; col++) {
          if (data[row][col].toString().indexOf(",") != -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) {
          csv += data[row].join(",") + "\r\n";
        }
        else {
          csv += data[row];
        }
      }
      csvFile = csv;
    }
    return csvFile;
  }
  catch(err) {
    Logger.log(err);
    Browser.msgBox(err);
  }
}

Xem thêm tại đây: http://drzon.net/export-all-google-sheet-to-csv/


Điều này hoạt động từ tài khoản Gmail cá nhân của tôi kể từ 6/2018. Có thể muốn xác nhận và sửa đổi câu trả lời của bạn cho phù hợp. Cảm ơn kịch bản này - nó hoạt động như một cơ duyên để loại bỏ 30 tab từ Google Sheets!
Corey S.

Michael không giống như chức năng xuất Google Sheets, tập lệnh này xuất với các hàng dữ liệu trống. Làm thế nào tôi có thể loại bỏ chúng?
Growler

1
DocsListtrong dòng 11 phải được thay thế bằng DriveAppphiên bản mới, nhưng nếu không thì điều này hoạt động rất tốt cho một tờ có hàng tá tab mà tôi có.
Sixhobbits

1
@Sixhobbits cảm ơn, tôi thực sự đã cập nhật nguồn chính, nhưng không phải là câu trả lời. Cập nhật ngay bây giờ
Michael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.