2016-08-14 3 views
0

Ich entwickle gerade ein kleines Skript, dessen Endergebnis ist, dass es die Datei- und Ordnerstruktur meines Google Drive oder eines anderen Ordners zurückgibt. Ich habe einen grundlegenden Rahmen nimmt Gestalt an, die vernünftigerweise, wie es sollte zu funktionieren beginnt:Google Drive Mapping Skript Fehler zurückgegeben

function folderMap() { 
var rootFolder=DriveApp.getFolderById("arbitraryFolderId"); 
var rootFiles=[]; 
var rootFolders=[]; 
var root=[rootFolders,rootFiles]; 
var i; 
getChildren(rootFolder,root); 
Logger.log(root); 
if(rootFolders!==null){ 
    for(i=0;i<rootFolders.length;i++){ 
    var tempName=rootFolders[i].getName(); 
    eval("var "+tempName+"Object=nextObject("+tempName+");"); 
    getChildren(rootFolders[i],eval(tempName+"Object")); 
    Logger.log(tempName); 
    } 
} 
} 

function getChildren(parent,parentObject){ 
var folders= parent.searchFolders(''); 
while (folders.hasNext()) { 
var folder = folders.next(); 
parentObject[0].push(folder); 
} 
var files= parent.searchFiles(''); 
while (files.hasNext()) { 
var file = files.next(); 
parentObject[1].push(file); 
} 
} 

function nextObject(name){ 
var dynamic= name; 
eval("var "+dynamic+"Folders=[];"); 
eval("var "+dynamic+"Files=[];"); 
var dummy=eval("var "+dynamic+"=["+dynamic+"Folders,"+dynamic+"Files];"); 
return dummy; 
} 

Dies ist jedoch gibt den Fehler SyntaxError: Missing ; before statement. (line 12, file "Code") I dieser Linie zusätzliche Semikolons in vor versucht haben, setzen, die Anpassung Klammern und generell mit dem Code herumhantieren, aber nichts, was ich tue, scheint diesen Fehler zu lösen.

Gibt es etwas sehr einfach, starrte mir ins Gesicht, dass ich vermisse?

Jede Hilfe würde sehr geschätzt werden.

Danke

EDIT: Zur Klarstellung arbitraryFolderId in Zeile 2 durch den String Id für den Ordner ersetzt wird, jedoch haben meine Werke Domain-Administrator fragten wir öffentlich nicht Datei oder einen Ordner-IDs gemeinsam nutzen; unabhängig von ihren Freigabeberechtigungen.

Antwort

0

Ich habe Ihren Code versucht, und es scheint, dass Sie eine gültige Ordner-ID anstelle von arbitraryFolderId in Zeile 2 bereitstellen müssen, um diesen Fehler zu beseitigen. Ich hoffe, es hilft Ihnen;)

+0

Ah, ich hätte in meinem ursprünglichen Beitrag klarer sein sollen. In dem Code, den ich ausführe, wird "arbitraryFolderId" durch die String-ID für den Ordner ersetzt. Mein Werksdomainadministrator hat jedoch gebeten, dass wir keine Datei- oder Ordner-IDs freigeben. unabhängig von ihren Freigabeberechtigungen. – dbr

+0

Aber ich habe deinen Code ausprobiert, und alles sieht gut aus. seltsam. Nachdem ich diese ID geändert habe, funktioniert es bei mir. – KENdi

+0

Noch aus irgendeinem Grund für mich nicht ausgeführt ... Könnte die Tatsache, dass einer der Ordnernamen "v1.0.5" ist, Probleme in Zeile 12 verursachen, wenn er als "TempName" bezeichnet wird? – dbr

0

Also ich bin mir nicht ganz sicher, warum dies das Problem behoben, das ich hatte, aber ich änderte die return Anweisung das Ergebnis der nextObject Funktion zurückgegeben und es hat das Problem behoben, das ich war haben. Der neue Arbeitscode ist wie folgt:

function folderMap() { 
var rootFolder=DriveApp.getFolderById("folderId"); 
var rootFiles=[]; 
var rootFolders=[]; 
var root=[rootFolders,rootFiles]; 
var i; 
getChildren(rootFolder,root); 
if(rootFolders!==null){ 
for(i=0;i<rootFolders.length;i++){ 
    var tempName=rootFolders[i].getName(); 
eval("var "+tempName+"Object=nextObject('"+tempName+"');"); 
getChildren(rootFolders[i],eval(tempName+"Object")); 
} 
} 
} 

function getChildren(parent,parentObject){ 
var folders= parent.searchFolders(''); 
while (folders.hasNext()) { 
var folder = folders.next(); 
parentObject[0].push(folder); 
} 
var files= parent.searchFiles(''); 
while (files.hasNext()) { 
var file = files.next(); 
parentObject[1].push(file); 
} 
} 

function nextObject(name){ 
var dynamic=name 
eval("var "+name+"Folders=[];"); 
eval("var "+name+"Files=[];"); 
return eval("["+name+"Folders,"+name+"Files];"); 
}