Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 在google drive上,文件夹是否存在始终返回false_Function_Google Apps Script_Boolean_Google Drive Api_Directory - Fatal编程技术网

Function 在google drive上,文件夹是否存在始终返回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

我正在使用谷歌应用程序脚本在谷歌硬盘上创建一个文件夹。我不想在驱动器上有任何重复,所以我创建了一个函数来确定文件夹是否存在

我将所有文件夹名称放入一个数组中,然后查看该数组中是否存在该文件夹名称。但它总是返回false

你能看出我哪里出了问题吗?或者有没有更好的方法来确定驱动器上是否存在文件夹

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)

Line
folder=search.hasNext()?search.next():folder.createFolder(名称)可替换为:

if (folders.hasNext()) {
  folder = folders.next();
} else {
  folder = DriveApp.createFolder(dropbox);
}

如果您只想检查目录是否存在,则需要省略
folder.createFolder(名称)并返回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);
}