Apps Script, import .CSV automatisé + ajout de 2 colonnes
P
Bonjour à tous
J'ai un script (qui fonctionne parfaitement), qui importe les fichiers CSV que je dépose dans dossier google drive, sur une feuille Google Sheet.
Voici le script :
const FOLDER_ID = '15808SL4tzDxodx66b7Zw_GP1nJQNBZTD'; // your Google Drive folder id
const TAB_NAME = 'Imports inventaires'; // update this to the tab name where you want the data to be appended
function onOpen() {
let ui = SpreadsheetApp.getUi();
ui.createMenu('CSV Script').addItem("Get CSVs","importCSVs").addToUi();
}
function importCSVs() {
let folder = DriveApp.getFolderById(FOLDER_ID);
let files = folder.getFiles();
let data = [];
while (files.hasNext()) {
let file = files.next();
let fileType = file.getMimeType();
if (fileType == "text/csv") {
let csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
csvData.splice(0,1);
csvData = csvData.filter(x => x[0] != '');
csvData.forEach(x => data.push(x));
file.setTrashed(true);
}
}
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName(TAB_NAME);
sheet.getRange(sheet.getLastRow()+1,1,data.length,data[0].length).setValues(data);
sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn()).sort({column: 1, ascending: true});
}J'aimerais pouvoir ajouter 2 colonnes (en Cg et CH) additionnelles aux données .csv importées :
- l'horodateur
- le nom du fichier importé
Est-ce posible??
Merci
Philippe
N
Hello,
pas testé
const FOLDER_ID = '15808SL4tzDxodx66b7Zw_GP1nJQNBZTD';
const TAB_NAME = 'Imports inventaires';
function onOpen() {
let ui = SpreadsheetApp.getUi();
ui.createMenu('CSV Script')
.addItem("Get CSVs", "importCSVs")
.addToUi();
}
function importCSVs() {
const folder = DriveApp.getFolderById(FOLDER_ID);
const files = folder.getFiles();
const data = [];
while (files.hasNext()) {
const file = files.next();
const fileType = file.getMimeType();
if (fileType === "text/csv") {
let csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
// Suppression de la ligne d'en-tête si nécessaire
csvData.splice(0, 1);
// Filtrage des lignes vides
csvData = csvData.filter(row => row[0] !== '');
const timestamp = new Date();
const fileName = file.getName();
// Ajout des colonnes "horodateur" et "nom du fichier"
const enrichedData = csvData.map(row => {
row.push(timestamp);
row.push(fileName);
return row;
});
// Ajout à la collection globale
data.push(...enrichedData);
// Déplacement du fichier à la corbeille
file.setTrashed(true);
}
}
if (data.length === 0) return;
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(TAB_NAME);
const startRow = sheet.getLastRow() + 1;
const startCol = 1;
sheet.getRange(startRow, startCol, data.length, data[0].length).setValues(data);
// Tri par la première colonne
sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn())
.sort({column: 1, ascending: true});
}