使用谷歌电子表格时,如何一次下载所有表格?
我想使用选项:
以逗号分隔的值
但它只下载当前的表格,如何全部获取它们?
答案 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);
}
}