Function 在google drive上,文件夹是否存在始终返回false
我正在使用谷歌应用程序脚本在谷歌硬盘上创建一个文件夹。我不想在驱动器上有任何重复,所以我创建了一个函数来确定文件夹是否存在 我将所有文件夹名称放入一个数组中,然后查看该数组中是否存在该文件夹名称。但它总是返回false 你能看出我哪里出了问题吗?或者有没有更好的方法来确定驱动器上是否存在文件夹Function 在google drive上,文件夹是否存在始终返回false,function,google-apps-script,boolean,google-drive-api,directory,Function,Google Apps Script,Boolean,Google Drive Api,Directory,我正在使用谷歌应用程序脚本在谷歌硬盘上创建一个文件夹。我不想在驱动器上有任何重复,所以我创建了一个函数来确定文件夹是否存在 我将所有文件夹名称放入一个数组中,然后查看该数组中是否存在该文件夹名称。但它总是返回false 你能看出我哪里出了问题吗?或者有没有更好的方法来确定驱动器上是否存在文件夹 function doesContainerExist(container) { var folders = DriveApp.getFolders(); var Folders = new Ar
function doesContainerExist(container) {
var folders = DriveApp.getFolders();
var Folders = new Array;
var boolean;
while(folders.hasNext()) {
Folders.push(folders.next());
}
if(Folders.indexOf(container) == -1) {
boolean = false;
} else {
boolean = true;
}
Logger.log(container);
return boolean;
};
在尝试搜索文件夹对象时,只能搜索字符串
function doesContainerExist(container) {
var folders = DriveApp.getFolders();
var Folders = new Array();
var boolean;
while(folders.hasNext()) {
Folders.push(folders.next().getName());
}
if(Folders.indexOf(container) == -1) {
boolean = false;
} else {
boolean = true;
}
Logger.log(container);
return boolean;
};
还有另一种检查文件夹是否已存在的有效方法,下面是带有testfunction的代码供您尝试:
function testTest(){
Logger.log(testFolder('Photos'));// returns true if folder exists, false if it doesn't
}
function testFolder(folderName){
var exist = true;
try{var testFolder = DocsList.getFolder(folderName)}
catch(err){exist=false}
return exist;
}
由于您的最终目的是创建文件夹,因此您可以直接在脚本的“catch”部分中创建它,或者只需将try/catch集成到用于创建文件夹的现有代码中。以下函数检查路径是否存在。如果不是,它就会创建它。传递的参数
path
是一个如下所示的字符串(例如):
var path=“//主文件夹/子文件夹1/子文件夹2”代码>
如果要创建此目录,请调用createDirectory(path)
Linefolder=search.hasNext()?search.next():folder.createFolder(名称)代码>可替换为:
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
如果您只想检查目录是否存在,则需要省略folder.createFolder(名称)从循环中选择code>并返回false。Ok这太简单了。在我发现try函数没有执行后代码将停止运行之前,我在函数中进行了一次try捕获,因此它与您的示例完全相同。我没有意识到它会按自己的功能工作。感谢您的帮助。此函数“testFolder”似乎不可靠。无法将变量传递到catch中,因此exist=false将不起作用。虽然函数doesFolderExist(folderName){var exists=true;尝试{var testFolder=DocsList.getFolder(folderName);if(typeof testFolder='folder'){return exists;}}catch(err){var exist=false return exist;}你说的“不可靠”是什么意思?一个脚本工作或不工作,不可靠的将意味着有时它有时不工作。。。在本例中,它只是工作。很抱歉,这可能被认为是居高临下,我今天早上在看代码,它看起来不工作,因为变量存在。你的权利确实有效。
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}