2017-08-07 4 views
1

Ich versuche, den gesamten Text aus einer bestimmten Zelle aller Tabellen in einem Ordner zu erhalten. Mein aktuelles Problem ist, dass ich sie nur als Dateityp einlesen kann, der es mir nicht erlaubt, auf die Funktion getRange() zuzugreifen.Lesen mehrerer Tabellen in Google App-Skript

Hier ist mein Code so weit.

function createLog() { 

    var folder = DriveApp.getFolderById("id#");//not placing actual id for privacy 

    var contents = folder.getFiles(); 

    var data; //array for relevant text 

    var file; 

    var d = new Date(); 

    var log = SpreadsheetApp.create("Events log "+d.getMonth()+"/"+d.getDay()); 



while(contents.hasNext()) { 

    file = contents.next(); 

    file.getRange("A6");//error is here because it is a file type not a spreadsheet 



    } 


    for(var i =0; i<contents.length;i++){ 

log.getRange(0,i).setValue(data[i]); 

    } 

} 

Antwort

1

Sobald Sie die Liste der Dateien haben, müssen Sie sie mit SpreadsheetApp öffnen. Dann können Sie mit den Tabellen- und Bereichsfunktionen an Spreadsheet arbeiten.

var spreadsheet = SpreadsheetApp.openById(file.getId()); 
var sheet = spreadsheet.getSheetByName('your sheet name'); 
var value = sheet.getRange("A6"); 

See:

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app https://developers.google.com/apps-script/reference/drive/file#getId()

1

Camerons Antwort ist richtig, aber ich schlage vor, Tabellen von ID zu öffnen statt Namen, weil in Google Drive viele Dateien können den gleichen Namen haben ... Unten finden Sie einen vereinfachten Demo-Code, um die Idee zu testen und ein paar Kommentare, um hervorzuheben, was angepasst werden muss.

function createLog() { 
    var folder = DriveApp.getFolderById("0B3###############ZMDQ");//not placing actual id for privacy 
    var contents = folder.getFilesByType(MimeType.GOOGLE_SHEETS); 
    var data; //array for relevant text 
    var fileID,file,sheet; 
    var data = []; 
    var d = new Date(); 
    var log = SpreadsheetApp.create("Events log "+d.getMonth()+"/"+d.getDay()); 

    while(contents.hasNext()) { 
    file = contents.next(); 
    Logger.log('Sheet Name = '+file.getName()); 
    fileID = file.getId(); 
    sheet = SpreadsheetApp.openById(fileID).getSheets()[0];// this will get the first sheet in the spreadsheet, adapt to your needs 
    data.push([sheet.getRange("A6").getValue()]);// add a condition before this line to get only the data you want 
    } 
    log.getActiveSheet().getRange(1,1,data.length, data[0].length).setValues(data); 
}