2017-06-26 3 views
0

Chaque semaine, je reçois une pièce jointe .xls/.csv dans mon courriel qui contient des données. Je télécharge ensuite les données dans Confluence à partir d'une feuille Google. Comment puis-je faire en sorte que la pièce jointe .xls mette automatiquement des données dans la feuille Google? Y a-t-il un script que je peux utiliser? La pièce jointe n'a jamais le même nom je pense.Comment importer automatiquement des données Excel hebdomadaires d'une pièce jointe à une feuille google?

Répondre

0

Voici un script que j'ai fait récemment pour quelqu'un d'autre. Je pense qu'il obtient des fichiers dans un dossier et les ajoute à une feuille, puis renomme les anciens fichiers en filename.old afin qu'il ne les chargera plus la prochaine fois que la fonction est appelée.

function appendingCSV() { 
    var ss=SpreadsheetApp.getActiveSpreadsheet() 
    var sht=ss.getActiveSheet(); 
    var drng = sht.getDataRange(); 
    var lastRow = drng.getLastRow(); 
    //var data = loadFile(); 
    var data = loadFiles(); 
    var dataA =Utilities.parseCsv(data); 
    if(dataA.length>0) 
    { 
    var rng = sht.getRange(lastRow + 1, 1, dataA.length, dataA[0].length); 
    rng.setValues(dataA); 
    } 
    else 
    { 
    SpreadsheetApp.getUi().alert('No Data Returned from LoadFiles'); 
    } 
} 

function loadFiles(folderID) 
{ 
    var folderID = (typeof(folderID) !== 'undefined')? folderID : 'FolderID'; 
    var fldr = DriveApp.getFolderById(folderID); 
    var files = fldr.getFiles(); 
    var s=''; 
    var re = /^.*\.csv$/i; 
    while (files.hasNext()) 
    { 
    var file = files.next(); 
    var filename = file.getName(); 
    if(filename.match(re)) 
    { 
     s+=file.getBlob().getDataAsString().split('\n').splice(1).join('n') + '\n';//this was an attempt to strip off the headers. I don't know if it worked or not. 
     //s += file.getBlob().getDataAsString() + '\n'; 
     file.setName(filename.slice(0,-3) + 'old'); 
    } 
    } 
    return s; 
}