2017-08-04 3 views
0

Das ist mein Code ist, ist der Punkt, in einem Ordner-ID weitergeben und haben es alle Vorkommen des Dateinamens in diesem Ordner angegeben log:Warum akzeptiert Google Script's getFolderbyId keine Variablen ohne Fehler?

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

SearchFiles("ID Here"); 

Das Problem ist, wenn dieser Code ausgeführt wird, erhalte ich die Fehler "Es konnte kein Objekt mit der angegebenen ID gefunden werden oder Sie haben keine Zugriffsberechtigung." obwohl ich sicher bin, dass die ID korrekt ist und ich die richtigen Berechtigungen habe. Wenn ich statt der Variable stattdessen die richtige ID direkt in die Funktion getFolderById einfüge, funktioniert alles korrekt ohne Fehler. Was hindert mich daran, die Variable zu verwenden?

+1

Die 'getFolderById()' Methode erfordert die ID zu sein ein Faden. Wenn die Funktion eine ID empfängt, die eine Ganzzahl ist, könnte dies zu einem Fehler führen. Überprüfen Sie den Datentyp: 'Logger.log ('typeof SourceID:' + typeof SourceID)' Fügen Sie diese Codezeile hinzu, führen Sie den Code aus und dann Logs anzeigen. Wenn die SourceID-Variable kein Datentyp 'Zeichenfolge' ist, ist das das Problem. –

Antwort

1

Welche Funktion laufen Sie? Ich vermute, dass Sie die SearchFiles Funktion ausführen, wenn Sie auf Ausführen klicken. Rufen Sie die SearchFiles Funktion in einer anderen Funktion und führen, wie unten die Funktion:

function myFunction() { 
    SearchFiles("Folder ID"); 
} 

function SearchFiles(SourceID) 
{ 
    var source = DriveApp.getFolderById(SourceID); 
    var searchFor ='title contains "Desired File Name"'; 
    var names =[]; 
    var Dates=[]; 
    var files = source.searchFiles(searchFor); 
    while(files.hasNext()) 
    { 
    var file = files.next(); 
    var date = file.getDateCreated(); 
    Dates.push(date); 
    var name = file.getName(); 
    names.push(name); 
    } 

    for (var i=0;i<names.length;i++) 
    { 
    Logger.log(names[i]); 
    Logger.log(Dates[i]); 
    } 
} 

Run myFunction und es sollte funktionieren wie erwartet:

enter image description here

+0

Das funktioniert perfekt, danke! Ich denke, ich dachte, dass es unten funktionieren würde, aber ich denke nicht. –

Verwandte Themen