Google Drive Mapping脚本返回错误
问题描述:
我目前正在开发一个简短的小脚本,其最终结果是它会返回我的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替换该文件夹,但是,我的作品域管理员已经要求我们不公开分享文件或文件夹标识的;不管他们的共享权限如何。
答
我试过你的代码,看起来你需要在第2行中提供一个有效的文件夹ID而不是arbitraryFolderId
,以使错误消失。我希望它可以帮助你;)
答
所以我不完全确定为什么这解决了我遇到的问题,但我改变了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];");
}
嗯,我应该在我原来的职位更清晰。在我运行的代码中,'arbitraryFolderId'被替换为文件夹的字符串ID,但是,我的作品域管理员要求我们不公开共享文件或文件夹ID;不管他们的共享权限如何。 – dbr
但我试过你的代码,并且一切看起来都很好。奇怪的。在我更改了该ID后,它对我有用。 – KENdi
由于某种原因,我仍然没有运行...可能事实上,其中一个文件夹名称为'v1.0.5'时,会导致第12行调用tempName时出现问题? – dbr