getBlob().isGoogleType() 为 Google Docs 文件返回 false

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。当我要求它返回 file.getBlob().getContentType() 时,似乎所有内容都转换为 application/pdf.

我在这段代码中做错了什么,还是有其他方法可以确定文件是否为 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 变为 application/pdf。在这种情况下,不能使用 isGoogleType()。我认为这可能是一个错误。而且,这似乎已在 Google 问题跟踪器中报告。 Ref 我认为在这种情况下,当使用 isGoogleType() 时,这可能需要是 Class File.

的方法

为了使用 Google Apps 脚本仅检索 Google Docs 文件,作为一种解决方法,使用 searchFiles 的方法使用 mimeType contains 'application/vnd.google-apps' 的搜索查询怎么样?当这反映在示例脚本中时,它变为如下。

示例脚本:

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 文件。参考

参考:

  • 搜索文件(参数)
  • 搜索查询词和运算符