Google电子表格:立即下载所有表格

时间:2015-02-24 21:59:11

标签: google-sheets

使用谷歌电子表格时,如何一次下载所有表格?

我想使用选项:

  

以逗号分隔的值

但它只下载当前的表格,如何全部获取它们?

2 个答案:

答案 0 :(得分:0)

您可以使用Google脚本将电子表格的所有表单保存到单独的文件中。

function myFunction() {
  var ss = SpreadsheetApp.openById(SHEET_ID);
  var sheets = ss.getSheets();
  for (var s in sheets) {
    var csv = "";
    var data = sheets[s].getDataRange().getValues();
    for (d in data) {
      csv += data[d].join(",") + "\n";
    }
    DriveApp.createFile(sheets[s].getName() + ".csv", csv);
  }
}

答案 1 :(得分:0)

对于导航到此问题的任何人来说,即使在 2021 年,他们也尝试将 Google 电子表格中的所有选项卡一次性下载为 CSV 文件,但似乎没有 GUI 按钮可以执行此操作。至少我什么都看不到。 @Amit Agarwal 的答案很好,可以获取所有工作表,但如果您的文件在单元格中有逗号分隔的数据,那么数据可能会被破坏。

我采用了 Amit 的方法 https://stackoverflow.com/a/28711961 并将其与 Michael Derazon 和 Aaron Davis 的方法 https://gist.github.com/mrkrndvs/a2c8ff518b16e9188338cb809e06ccf1 相结合,将所选 Google 电子表格的所有选项卡转储到 Google 云端硬盘中的一个文件夹中。然后,您只需单击一下即可下载该文件夹。

以下是 Google 脚本,不完全是 Javascript,您必须使用您的 Google id 将其复制粘贴到 https://script.google.com/ 登录名中,然后创建一个项目,然后创建一个脚本应用程序,然后保存并执行这个。

// https://stackoverflow.com/a/28711961
function export_sheets_as_csv_to_folder() {
  // Sheet id is in URL https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit#gid=IGNORE
  var ss = SpreadsheetApp.openById('YOUR_SHEET_ID');
  var sheets = ss.getSheets();
  if (sheets === undefined || sheets.length === 0) {
    return;
  }
  var passThroughFolder = DriveApp.createFolder('YOUR_PREFERRED_FOLDER_NAME_IN_DRIVE');
  for (var s in sheets) {
    var csv = convertRangeToCsvFile_(sheets[s])
    passThroughFolder.createFile(sheets[s].getName() + ".csv", csv);
  }
}

// https://gist.github.com/mrkrndvs/a2c8ff518b16e9188338cb809e06ccf1
function convertRangeToCsvFile_(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);
  }
}