2016-08-14 74 views
0

我目前正在开发一个简短的小脚本,其最终结果是它会返回我的Google云端硬盘或其中某个文件夹的文件和文件夹结构。我有一个基本的框架雏形正在开始合理地发挥作用,因为它应该:Google Drive Mapping脚本返回错误

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; 
} 

这一点,但是,返回错误SyntaxError: Missing ; before statement. (line 12, file "Code") 我曾尝试这条线投入之前额外分号,调整括号并通常摆弄代码,但我没有做似乎解决这个错误。

有什么东西很简单,盯着我失踪的脸上?

任何帮助将不胜感激。

谢谢

编辑:为了澄清,arbitraryFolderId在第2行是由字符串ID替换该文件夹,但是,我的作品域管理员已经要求我们不公开分享文件或文件夹标识的;不管他们的共享权限如何。

回答

0

我试过你的代码,看起来你需要在第2行中提供一个有效的文件夹ID而不是arbitraryFolderId,以使错误消失。我希望它可以帮助你;)

+0

嗯,我应该在我原来的职位更清晰。在我运行的代码中,'arbitraryFolderId'被替换为文件夹的字符串ID,但是,我的作品域管理员要求我们不公开共享文件或文件夹ID;不管他们的共享权限如何。 – dbr

+0

但我试过你的代码,并且一切看起来都很好。奇怪的。在我更改了该ID后,它对我有用。 – KENdi

+0

由于某种原因,我仍然没有运行...可能事实上,其中一个文件夹名称为'v1.0.5'时,会导致第12行调用tempName时出现问题? – dbr

0

所以我不完全确定为什么这解决了我遇到的问题,但我改变了return声明返回nextObject函数的结果的方式,并且它纠正了我所遇到的问题有。新的工作代码如下:

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];"); 
}