我一直在尝试: 使用 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/