javascript - 如何使用 Google Apps 脚本列出云端硬盘中非 "google"mime 类型的所有文件?

标签 javascript google-apps-script google-drive-api

我一直在尝试: 使用 Google Apps 脚本,查找所有不属于我且不是 google 类型的文件。

这就是我所拥有的:

// 1° try:
var queryStr = "sharedWithMe = true and not mimeType contains 'google'";
var filesIterator = DriveApp.searchFiles(queryStr);
while(filesIterator.hasNext()){
    debugger; // it never gets here
}

// 2° try:
var queryStr = "not 'me' in owners and not mimeType contains 'google'";
var filesIterator = DriveApp.searchFiles(queryStr);

while(filesIterator.hasNext()){
    debugger; // it never gets here
}

在 Google 云端硬盘 UI 搜索中,可以找到大量符合该条件的文件,因此肯定存在与我正在尝试的查询相关的内容。

谢谢

最佳答案

我想这就是你想要的:

function listNonGoogleMimetypes(id) {
  var id=id||'default id';
  var files=DriveApp.getFolderById(id).getFiles();
  var list=[];
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    if(file.getMimeType().indexOf('GOOGLE')==-1) {
      list.push(file.getName());
    }
  }
  Logger.log(JSON.stringify(list));
}

这将为整个驱动器执行此操作:

var list=[];

function listNonGoogleMimetypesInDrive() {
  getFnF();
  Logger.log(JSON.stringify(list));
}

function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    var name=file.getName();
    if(!type.match(/google/i)) {
      list.push(file.getName());
    }
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    getFnF(subfolder);
  }
}

这可能需要一段时间才能完成您的整个驱动器。我花了大约 2 分钟,但我没有那么多时间,因为我只是在我的帐户上进行了大量编程。

此版本还包括所有者电子邮件

function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    var name=file.getName();
    var owner=file.getOwner().getEmail();
    if(!type.match(/google/i) && owner!='your email address') {
      list.push(file.getName());
    }
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    getFnF(subfolder);
  }
}

关于javascript - 如何使用 Google Apps 脚本列出云端硬盘中非 "google"mime 类型的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57224597/

相关文章:

google-drive-api - 为什么此示例 AppScript 返回错误 : "Access Denied: DriveApp?"

java - 使用 google Drive api 让 children 没有垃圾

javascript - 如果属性匹配,则将新值插入数组

javascript - 从代码后面将变量传递给 javascript 方法

javascript - JS获取函数的父对象

google-apps-script - 从工作表图表中提取替代文本 - Apps 脚本

google-apps-script - Google 表格应用脚本 : How do I edit the Apps Script below to only copy over data from Column A to L and P to S?

Java:如何将 com.google.api.services.drive.model.File 转换为 InputStream?

google-cloud-platform - 使用 GCP 后端访问 Google Colab 中的驱动器时出错

javascript - Eloquent JavaScript : Can't understand recursion example