- Вы хотите объединить файлы CSV в один файл CSV.
- Файлы CSV находятся в определенной папке.
- Вы хотите создать объединенный файл CSV в определенной папке.
- Когда данные CSVобъединен, вы хотите удалить строки, которые имеют
Titel
в столбце «A». - Вы хотите добиться этого с помощью скрипта Google Apps.
Если я понимаюправильно, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких ответов.
В вашем скрипте все данные CSV помещаются в новую электронную таблицу с использованием appendRow()
, а затем, когда значение столбца "A" равно Titel
, строка удалена. В этом случае я думал, что стоимость процесса может стать высокой. Так как насчет следующего потока?
Поток:
- Извлечение каждого CSV-файла из определенной папки.
- Анализ файла как данных CSV.
- Из данных CSV удалите строки с
Titel
в столбце «A». - Поместите данные CSV в массив.
- После обработки всех файлов CSV извыше 2-4 массив, включающий данные CSV, экспортируется как файл CSV в определенную папку.
Когда вышеуказанный поток отражается в сценарии, он выглядит следующим образом.
Модифицированный скрипт:
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
.
SpreadsheetApp.create("Merge Sheets").getSheets()[0].getRange(1, 1, data.length, data[0].length).setValues(data);
Ссылки:
Если я неправильно понял ваш вопрос, и это не то направление, которое вам нужно, прошу прощенияe.
Edit:
Pattern 1:
Если вы хотите удалить 1-ую строку каждого 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();
- Ниже модифицированный скрипт оставляет только 1-ю строку в 1-ом CSVфайл.