Javascript 如何列出驱动器中所有不是“文件”的文件;谷歌";使用谷歌应用程序脚本的mime类型?
我一直在努力: 使用谷歌应用程序脚本,查找所有不属于我且不是谷歌类型的文件 这就是我所拥有的:Javascript 如何列出驱动器中所有不是“文件”的文件;谷歌";使用谷歌应用程序脚本的mime类型?,javascript,google-apps-script,google-drive-api,Javascript,Google Apps Script,Google Drive Api,我一直在努力: 使用谷歌应用程序脚本,查找所有不属于我且不是谷歌类型的文件 这就是我所拥有的: // 1° try: var queryStr = "sharedWithMe = true and not mimeType contains 'google'"; var filesIterator = DriveApp.searchFiles(queryStr); while(filesIterator.hasNext()){ debugger; // it never gets her
// 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
}
在GoogleDrive用户界面搜索中,在这种情况下可以找到很多文件,所以我正在尝试的查询一定有问题
谢谢我想这就是你想要的:
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);
}
}
我想这就是你想要的:
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);
}
}
非常感谢你的回答,库珀。但我一直在使用“searchFiles”功能,因为迭代速度更快,因为我有无数的文件和文件夹。如果我迭代每个文件夹和文件,我将达到执行时间限制。所以我需要使用这个“seachfiles”解决方案。你使用页面令牌吗?非常感谢你的回答。但我一直在使用“searchFiles”功能,因为迭代速度更快,因为我有无数的文件和文件夹。如果我迭代每个文件夹和文件,我将达到执行时间限制。所以我需要使用这个“seachfiles”解决方案。你使用页面令牌吗?Ps。我需要使用“searchFiles”功能,因为我的驱动器上有很多文件夹和文件,如果我使用其他方法,我将达到执行时间限制。Ps。我需要使用“searchFiles”功能,因为我的驱动器上有太多的文件夹和文件,如果我使用其他方法,我将达到执行时间限制。