2017-04-21 2 views
0

Je veux télécharger toutes les feuilles d'un document Excel au format csv. Actuellement, seules les premières données de feuille sont accessibles. le code est donné ci-dessous:Comment exporter toutes les feuilles d'un classeur à partir de google par lecteur api

function downloadGDriveFile (file) { 
var request1 = gapi.client.drive.files.export({ 
    'fileId': '1VLFgD8CNvXTVdHKyBdZPUmgFmhWMzg7qWLbxzLUTtSo', 
    'mimeType': 'text/csv' 
}) 
request1.then(function(response) { 
    //console.log(response); 
}, function(err) { 
    console.log('Error'); 
    console.log(err.result.error); 
}); 
} 

actuellement j'utilise un id statique. L'Excel a donné deux feuilles. Mais le code montre seulement les premières données de feuille. comment télécharger toutes les feuilles avec dans un classeur.

+0

double de http://stackoverflow.com/questions/43526270/how-to-export-specific-sheet-using-new-v3-google-drive-api Voir ma répondez là pour des solutions possibles – pinoyyid

+0

@pinoyyid votre lien donné est très utile. Mais je suis capable de faire le téléchargement de plusieurs feuilles. Pouvez-vous m'aider avec du code? – techie

Répondre

1

J'ai lu à partir de ce tutorial blog que c'est effectivement le comportement lorsque vous essayez d'exporter des fichiers. Toutefois, il existe un moyen d'obtenir toutes les feuilles de votre feuille de calcul à l'aide d'Apps Script. Après l'exécution du menu personnalisé "csv-> export en tant que fichier csv", les feuilles seront placées dans votre Google Drive à l'intérieur d'un dossier. Voici le code du blog:

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}]; 
    ss.addMenu("csv", csvMenuEntries); 
}; 

function saveAsCSV() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheets = ss.getSheets(); 
    // create a folder from the name of the spreadsheet 
    var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv_' + new Date().getTime()); 
    for (var i = 0 ; i < sheets.length ; i++) { 
    var sheet = sheets[i]; 
    // append ".csv" extension to the sheet name 
    fileName = sheet.getName() + ".csv"; 
    // convert all available sheet data to csv format 
    var csvFile = convertRangeToCsvFile_(fileName, sheet); 
    // create a file in the Docs List with the given name and the csv data 
    folder.createFile(fileName, csvFile); 
    } 
    Browser.msgBox('Files are waiting in a folder named ' + folder.getName()); 
} 

function convertRangeToCsvFile_(csvFileName, sheet) { 
    // get available data range in the spreadsheet 
    var activeRange = sheet.getDataRange(); 
    try { 
    var data = activeRange.getValues(); 
    var csvFile = undefined; 

    // loop through the data in the range and build a string with the csv data 
    if (data.length > 1) { 
     var csv = ""; 
     for (var row = 0; row < data.length; row++) { 
     for (var col = 0; col < data[row].length; col++) { 
      if (data[row][col].toString().indexOf(",") != -1) { 
      data[row][col] = "\"" + data[row][col] + "\""; 
      } 
     } 

     // join each row's columns 
     // add a carriage return to end of each row, except for the last one 
     if (row < data.length-1) { 
      csv += data[row].join(",") + "\r\n"; 
     } 
     else { 
      csv += data[row]; 
     } 
     } 
     csvFile = csv; 
    } 
    return csvFile; 
    } 
    catch(err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
    } 
} 
+0

comment utiliser ce code. Je me suis fatigué de fusionner ce code avec mon code Mais je n'ai pas eu les autres feuilles attendre le premier. Aide avec du code. – techie