如何文件和文件夹之间的DriveApp使用GAS我歧视(How can I discriminate

2019-10-20 08:47发布

我知道一个文件夹其实是一个特殊的mime类型文件application/vnd.google-apps.folder在谷歌驱动器。 但是关于DriveApp文件夹类文件不包含方法getMimeType()之类DriveApp File类一样。

在功能如何发现如果函数的参数是指一个文件夹或(正常)文件?

function displayResults(fileOrFolder)
{
  var id   = fileOrFolder.getId();
  var name =  fileOrFolder.getName();

  var mimeType = fileOrFolder.getMimeType();  // works if file; error if folder

  if (fileOrFolder == <Class File>)
  {
     <do something>
  }
  else if (fileOrFolder == <Class Folder>)
  {
     <do something else>
  }
}

Answer 1:

你看,如果该方法存在。 如果obj.getMimeType ===未定义它的文件夹。
或者,使之在壳体更健壮的API的变化(添加方法的文件夹),使用
if (obj.getMimeType===undefined || obj.getMimeType.toLowerCase() =="application/vnd.google-apps.folder")



Answer 2:

我不明白为什么你说齐格的回答不工作...所有我做的测试呈阳性反应。

例如我如何测试了它(测试ID公开共享的,因此应该为任何人工作)的:

function test(){
  var item = DriveApp.getFileById('0B3qSFd3iikE3MS0yMzU4YjQ4NC04NjQxLTQyYmEtYTExNC1lMWVhNTZiMjlhMmI');
  testDriveFolders(item);
  var item = DriveApp.getFileById('1fXxLHuDlySZ6rOQjTsZdUl6rnw14sa17Q0ZTZ0HoGk1jbuHX-eLq1dyf');
  testDriveFolders(item);
}

function testDriveFolders(obj){
  try{var mimeType = obj.getMimeType()}catch(e){mimeType = 'folder'};
  var name =  obj.getName();
  if (mimeType =="application/vnd.google-apps.folder" || mimeType == 'folder'){
    Logger.log(name+' is a folder');
  }else{
        Logger.log(name+' is of the type '+mimeType);
  }
}


Answer 3:

获取相关的ID文件对象。 getMimeType()将工作:

var mt = DriveApp.getFileByID(fileOrFolder.getId()).getMimeType();
if (mt == MimeType.FOLDER) {
  // it's a folder
} else {
  // it's a file.
}


文章来源: How can I discriminate between file and folder in DriveApp using GAS