[英]Save spreadsheet as a csv file in given folder
我需要將根文件夾中的電子表格保存為特定給定文件夾中的 csv 文件。
在成員的幫助下,我能夠將多個 CSV 文件合並到一個工作表中並從多行中刪除相同的內容,現在我想將此工作表從我的根文件夾中保存為我給定文件夾中的 CSV 文件。
/* Retrieve the desired folder */
var myFolder = DriveApp.getFolderById('1niUw2-');
/* Get all spreadsheets that resided on that folder */
var spreadSheets = myFolder.getFilesByType(MimeType.CSV);
/* Create the new spreadsheet that you store other sheets */
var newSpreadSheet = SpreadsheetApp.create("Merge Sheets");
/* Iterate over the spreadsheets over the folder */
while(spreadSheets.hasNext()) {
var sheet = spreadSheets.next();
var file = DriveApp.getFileById(sheet.getId());
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
var newSheet = newSpreadSheet.getActiveSheet();
for (var i=0;i<csvData.length;i++) {
newSheet.appendRow(csvData[i]);
}
var data = newSheet.getDataRange();
var values = data.getValues();
for (var i=values.length -1; i >=1; i--){
if (values[i][0] == "Titel"){
newSheet.deleteRow(i+1);
}
}
myFolder.createFile('MERGED',newSheet,MimeType.CSV);
} }
我需要這個編輯過的電子表格文件“Merged sheet”從我的根文件夾到我給定的文件夾中作為 csv 文件。
Titel
的行。如果我的理解是正確的,那么這個修改呢? 請認為這只是幾個答案之一。
在您的腳本中,使用appendRow()
將每個 CSV 數據放入新的電子表格中,然后,當“A”列的值為Titel
時,該行被刪除。 在這種情況下,我認為工藝成本可能會變高。 那么下面的流程呢?
Titel
的行。當上述流程反映到腳本時,它變成如下。
function myFunction() {
var myFolder = DriveApp.getFolderById('###'); // Please set the folder ID including the CSV files.
var csvFiles = myFolder.getFilesByType(MimeType.CSV);
var data = [];
while (csvFiles.hasNext()) {
var csvFile = csvFiles.next();
var file = DriveApp.getFileById(csvFile.getId());
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()).filter(function(row) {return row[0] != "Titel"});
Array.prototype.push.apply(data, csvData);
}
myFolder.createFile('MERGED', data.map(function(row) {return row.join(",")}).join("\n"), MimeType.CSV);
}
如果要將合並的 CSV 數據創建為電子表格,請將以下腳本放在myFunction
的 function 的最后一行。
SpreadsheetApp.create("Merge Sheets").getSheets()[0].getRange(1, 1, data.length, data[0].length).setValues(data);
如果我誤解了您的問題並且這不是您想要的方向,我深表歉意。
如果要刪除每個CSV數據的第一行,下面的修改如何? 請修改我上面修改的腳本如下。
從: var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()).filter(function(row) {return row[0];= "Titel"});
至:
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); csvData.shift();
或者
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); if (data.length > 0) csvData.shift();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.