Google apps script 将大的google sheets文件导出为批量大小为500的多个csv
我想从Google Sheets下载一个10000行长的单数表单,将其拆分为20个单独的csv文件,每个文件的批量大小为500行。是否可以使用Google Sheets完成此操作?我找不到对Sheets的本机支持,无法下载并将文件分成多个部分/片段。但是我找到了一个Google apps script 将大的google sheets文件导出为批量大小为500的多个csv,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想从Google Sheets下载一个10000行长的单数表单,将其拆分为20个单独的csv文件,每个文件的批量大小为500行。是否可以使用Google Sheets完成此操作?我找不到对Sheets的本机支持,无法下载并将文件分成多个部分/片段。但是我找到了一个googleapps脚本代码,可以将工作表保存到csv中 所以我所做的就是修改代码,然后让它将一张工作表转换成多个csv 问题是,它会将所有这些文件上传到登录的谷歌硬盘中的一个文件夹中,然后你可以将它们下载到一个zip文件中。(我将在
googleapps脚本
代码,可以将工作表保存到csv中
所以我所做的就是修改代码,然后让它将一张工作表转换成多个csv
问题是,它会将所有这些文件上传到登录的谷歌硬盘中的一个文件夹中,然后你可以将它们下载到一个zip文件中。(我将在下文稍后展示)
这是你的电话号码
下面是我修改过的代码:
function saveAsCSV() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// Update numFiles into how many files you want is outputted
// The script will calculate how many rows it can place in a file equally
// Excess will be placed into an additional file
var numFiles = 5;
var rowsPerFile = Math.floor(sheet.getDataRange().getLastRow() / numFiles);
// create a folder from the name of the spreadsheet
var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv_' + new Date().getTime());
// append ".csv" extension to the sheet name
fileName = sheet.getName();
// convert all available sheet data to csv format
var csvFiles = convertRangeToCsvFile_(sheet, rowsPerFile);
// create a file in the Docs List with the given name and the csv data
csvFiles.forEach(function(csvFile, i){
var csvName = fileName + '_' + (i + 1) + '.csv';
folder.createFile(csvName, csvFile);
});
}
function convertRangeToCsvFile_(sheet, rowsPerFile) {
// get available data range in the spreadsheet
var activeRange = sheet.getDataRange();
try {
var data = activeRange.getValues();
var csvFiles = [];
// 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];
}
if ((row + 1) % rowsPerFile === 0) {
csvFiles.push(csv);
csv = "";
}
}
}
// If there are remainders that doesnt reach the number of files needed.
// It will add another file, containing all remainder rows there.
// 10010 rows / 20 files = 10 rows excess
// 21st file will contain those 10 rows excess
// No excess means no 21st file
if(csv) {
csvFiles.push(csv);
}
return csvFiles;
}
catch(err) {
Logger.log(err);
}
}
函数saveAsCSV(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getActiveSheet();
//将numFiles更新为要输出的文件数
//脚本将计算它可以在一个文件中平均放置多少行
//多余的将被放入另一个文件中
var numFiles=5;
var rowsPerFile=Math.floor(sheet.getDataRange().getLastRow()/numFiles);
//根据电子表格的名称创建文件夹
var folder=DriveApp.createFolder(ss.getName().toLowerCase().replace(//g,“'''+'''u csv'+new Date().getTime());
//将“.csv”扩展名附加到图纸名称
fileName=sheet.getName();
//将所有可用图纸数据转换为csv格式
var csvFiles=convertRangeToCsvFile(工作表,行文件);
//使用给定名称和csv数据在文档列表中创建一个文件
forEach(函数(csvFile,i){
var csvName=fileName+'.'+(i+1)+'.csv';
folder.createFile(csvName,csvFile);
});
}
函数convertRangeToCsvFile(工作表、行文件){
//获取电子表格中的可用数据范围
var activeRange=sheet.getDataRange();
试一试{
var data=activeRange.getValues();
var csvFiles=[];
//循环遍历范围中的数据,并使用csv数据构建字符串
如果(data.length>1){
var csv=“”;
对于(变量行=0;行