getBlob().isGoogleType() returning false for Google Docs file
我需要在我的脚本中确定文件是否为 Google 类型,但我似乎无法弄清楚为什么这不起作用。这是代码片段:
1 2 3 4 5 6 7 8 9 | function transferFiles() { var files = DriveApp.getFiles(); while (files.hasNext()) { var file = files.next(); if (file.getBlob().isGoogleType()) { do stuff } } } |
我的所有 Google 文件(文档、表格等)的 if 语句都返回 false。当我要求它返回
我在这段代码中做错了什么,还是有其他方法可以确定文件是否为 Google 类型?
这是另一个建议。所有 Google 原生格式都在您的云端硬盘中占用 0 个字节。您可以比较循环内的文件大小,以确定文件是否为原生 Google 类型。
1 2 3 4 5 6 7 8 9 | function transferFiles() { var files = DriveApp.getFiles(); while (files.hasNext()) { var file = files.next(); if (file.getSize() == 0) { // do something } } } |
一些解决方法建议:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function transferFiles() { var files = DriveApp.getFiles(); var googleMimeTypes = [MimeType.GOOGLE_APPS_SCRIPT, MimeType.GOOGLE_DOCS, MimeType.GOOGLE_DRAWINGS, MimeType.GOOGLE_FORMS, MimeType.GOOGLE_SHEETS, MimeType.GOOGLE_SLIDES]; while (files.hasNext()) { var file = files.next(); if(googleMimeTypes.indexOf(file.getMimeType()) != -1){ Logger.log(file.getName() +" is Google Type!"); } else{ Logger.log(file.getName() +" is not Google Type!"); } } } |
问题和解决方法:
当从 Google Docs 文件中检索 blob 时,mimeType 变为
的方法
为了使用 Google Apps 脚本仅检索 Google Docs 文件,作为一种解决方法,使用
示例脚本:
1 2 3 4 5 6 7 | var files = DriveApp.searchFiles("mimeType contains 'application/vnd.google-apps'"); while (files.hasNext()) { var file = files.next(); // In this case, the retrieved files are the Google Docs files with the mimeType including the value of"application/vnd.google-apps". // do something } |
-
在此示例脚本中,检索具有包含
application/vnd.google-apps 值的 mimeType 的 Google Docs 文件。参考
参考:
- 搜索文件(参数)
- 搜索查询词和运算符