2016-07-14 4 views
0

Ich bin neu in JavaScript und Google Apps zu codieren. Ich mache eine Datenbank, die neue Benutzer automatisch jeden Abend in ein Gesamtblatt aktualisiert.TypeError: Funktion hasNext im Objekt nicht gefunden (Ordner mit Datums-ID)

Meine searchfolder() -Funktion wird nicht ausgeführt, weil ich immer den Fehler bekomme "TypeError: Funktion hasNext im Objekt nicht gefunden. Do Jul 14 09:48:01 PDT 2016 INFO: Ziel. (Zeile 24, Datei arbeitet täglich) "

var Dateien hat .getfiles nach DriveApp.getFolderById (OrdnerId) so habe ich nicht die geringste Ahnung, was das Problem

CODE:

var counter = 0; 

function timeStamp(){ 
counter= (counter+1) 
} 

var files = "null" 

function searchFolder() { 
    var folderId = '0B6wmHZ5c0fzfTjI1bFpKOHI3N3M'; // test folder 
    // Log the name of every file in the folder. 
var files = DriveApp.getFolderById(folderId).getFiles(); //log files in  
folder 
    while (files.hasNext()) { //loop log files in folder 
    var file = files.next(); //log files in folder 
    Logger.log(file.getName()); //logs name of file in folder 
    var files = Logger.getLog(); 
    } 
} 

function autoUpdate(){ //updates monthly from newly imported daily 
    if (counter == 1){ //counter is made to be 1 when day is uploaded to 
    monthly 
    var ss =  
    SpreadsheetApp.openById("1lH9Y12P2Q2OFndIJoAU48ePggXFc9WGcWjolZMcABoc"); 
    //defines target spreadsheet ie monthly 
    SpreadsheetApp.setActiveSpreadsheet(ss); //sets target spreadsheet as 
    active 
    var range= ss.getRange("A1:A1"); 
    range.activate; // activates range 
    range.setValue('=IMPORTRANGE("1K7Rj4QK- 
    EVjf8lZ0BSew7iDeCtktqWjzgjoaVPe5jSc","sheet1!A1:G6")'); //Puts in 
    IMPORTRANGE into target as a STRING value (just words). Once it hits the 
    sheet, then SHEETS executes IMPORTRANGE not SCRIPTS. In Source sheet, 
    range is selected to import to target (ie A1:G6) 
    counter=(counter-1) 
    } 
} 

//searchFolder(); 
timeStamp(); 
autoUpdate(); 

Antwort

0

Sie deklarierte Variable files zweimal. Außerdem ist es eine schlechte Übung, in das Protokoll zu drücken und dann wieder Protokolle zu bekommen. Verwenden Sie stattdessen besser Array. Sie haben einen Fehler erhalten, weil die Variable files, in der Sie Dateinamen speichern, nach der ersten Schleife in den Protokollkontext geändert wird. Das bedeutet, dass in Ihrem files Objekt keine Funktion hasNext mehr vorhanden ist (es ist nicht vom Typ string).

var counter = 0; 

function timeStamp(){ 
counter= (counter+1) 
} 

var files = []; 

function searchFolder() { 
    var folderId = '0B6wmHZ5c0fzfTjI1bFpKOHI3N3M'; // test folder 
    // Log the name of every file in the folder. 
var filesN = DriveApp.getFolderById(folderId).getFiles(); //log files in folder 
    while (filesN.hasNext()) files.push(filesN.next().getName()); 
} 

function autoUpdate(){ //updates monthly from newly imported daily 
    if (counter == 1){ //counter is made to be 1 when day is uploaded to monthly 
    var ss = SpreadsheetApp.openById("1lH9Y12P2Q2OFndIJoAU48ePggXFc9WGcWjolZMcABoc"); 
    //defines target spreadsheet ie monthly 
    SpreadsheetApp.setActiveSpreadsheet(ss); //sets target spreadsheet as 
    active 
    var range= ss.getRange("A1:A1"); 
    range.activate; // activates range 
    range.setValue('=IMPORTRANGE("1K7Rj4QK-EVjf8lZ0BSew7iDeCtktqWjzgjoaVPe5jSc","sheet1!A1:G6")'); //Puts in IMPORTRANGE into target as a STRING value (just words). Once it hits the sheet, then SHEETS executes IMPORTRANGE not SCRIPTS. In Source sheet, range is selected to import to target (ie A1:G6) 
    counter=(counter-1) 
    } 
} 

searchFolder(); // After this function all file names are stored in variable `files` 
timeStamp(); 
autoUpdate(); 

Wenn Sie auch alle Dateien im Ordner anmelden, können Sie Logger.log(files.join('\n'));

+0

ausführen Dieser total der Trick! Vielen Dank für die Erziehung und die Reparatur, kann Ihnen nicht sagen, wie viel Lebensretter das ist! –

Verwandte Themen