Apps Script, import .CSV automatisé + ajout de 2 colonnes

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

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});
}
Rechercher des sujets similaires à "apps script import csv automatise ajout colonnes"