【问题标题】:Google spreadsheet: Download all the sheets at onceGoogle 电子表格:一次下载所有工作表
【发布时间】:2015-02-24 21:59:11
【问题描述】:

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

我想使用选项:

逗号分隔值

但它只下载当前工作表,如何全部获取?

【问题讨论】:

  • @pnuts 每张 .csv 文件

标签: google-sheets


【解决方案1】:

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

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

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

// 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);
  }
}

【讨论】:

    【解决方案2】:

    您可以使用 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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      相关资源
      最近更新 更多