从 Gmail 到 Google 表格的 XLSX:无效的 MIME 类型。内容类型似乎是应用程序/八位字节?

2024-01-13

我正在尝试使用 Google Apps 脚本将 xlsx 文件从 Gmail 附件导入到 Google 云端硬盘(作为 Google 表格)。我尝试过在 GAS 中使用 Advanced Drive API,但这样做会导致以下错误:

对drive.files.insert 的API 调用失败并出现错误:无效的mime 类型 假如

我发现 Gmail 附件作为 application/octet 而不是 application/vnd.ms-excel 导入到 Google Apps 脚本中,我认为这是问题所在。但是,附件是一个 xlsx 文件,我不明白为什么它会被识别为应用程序/八位字节。

请记住,我想将 XLSX 转换为 Google 表格。因此我需要 MimeType。 这是代码:

 var mail  = GmailApp.search("XXXXXXX")[0];
  var msg = mail.getMessages()[0]
  var attachment = msg.getAttachments()[0];
  var blob =attachment
  var name = attachment.getName();
  var folderId = 'XXXXXX'; 

  var file = {
    title: 'Converted Spreadsheet',
   parents: [{id: folderId}],
    mimeType: MimeType.GOOGLE_SHEETS
  };
  file = Drive.Files.insert(file, blob, {convert: true})

有谁知道如何修复错误或找到另一种方法将此 XLSX 转换为工作表? 谢谢!


  • 在您的情况下,mimeType 为blob附件文件的内容是application/octet.
  • blob实际上是一个XLSX文件。
  • When blob of application/octet与使用Drive.Files.insert(),误差为Invalid mime type provided occurs.
  • 您想要将上述 blob 的 XLSX 文件转换为 Google Spreadsheet 并将其创建为文件。
  • 您希望使用 Google Apps 脚本来实现此目的。

如果我的理解是正确的,这个答案怎么样?请将此视为几个可能答案之一。

问题和解决方法:

  • When the mimeType of blob is application/octet,
    • When Drive.Files.insert({title: 'Converted Spreadsheet', parents: [{id: "root"}], mimeType: MimeType.GOOGLE_SHEETS}, blob, {convert: true})运行时,错误为Invalid mime type provided occurs.
    • When Drive.Files.insert({title: 'Converted Spreadsheet', parents: [{id: "root"}]}, blob, {convert: true})运行,没有出现错误。但创建的文件的 mimeType 是application/octet。这样,该文件就无法直接在 Google Drive 上打开。在这种情况下,需要将创建的文件的mimeType更改为XLSX。我认为这是由于This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.. Ref https://developers.google.com/drive/api/v2/reference/files/insert#request-body

从上述情况来看,在这个答案中,我想建议将 XLSX 的 mimeType 设置为blob before Drive.Files.insert is run.

修改后的脚本:

当您的脚本修改时,请修改如下。

From:

var blob =attachment

To:

var blob = attachment.setContentType(MimeType.MICROSOFT_EXCEL);  // MimeType.MICROSOFT_EXCEL or MimeType.MICROSOFT_EXCEL_LEGACY

or

To:

If blob如果文件名带有扩展名,您还可以使用以下脚本。在这种情况下,mimeType 由文件名的扩展名自动给出。

var blob = attachment.setContentTypeFromExtension();

Note:

  • 在上面修改的脚本中,有和没有的结果是相同的mimeType: MimeType.GOOGLE_SHEETS in file.
  • In your question, you say an xlsx file from a Gmail Attachment. And you say the Gmail attachment is imported to Google Apps Script as application/octet instead of application/vnd.ms-excel.
    • 如果文件是 XLSX 文件,则 mimeType 为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.
    • 如果 fie 是 XLS 文件,则 mimeType 为application/vnd.ms-excel.

参考:

  • 设置内容类型(内容类型) https://developers.google.com/apps-script/reference/base/blob#setcontenttypecontenttype
  • setContentTypeFromExtension() https://developers.google.com/apps-script/reference/base/blob#setcontenttypefromextension
  • 枚举 MimeType https://developers.google.com/apps-script/reference/base/mime-type

如果这没有解决您的问题,我深表歉意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Gmail 到 Google 表格的 XLSX:无效的 MIME 类型。内容类型似乎是应用程序/八位字节? 的相关文章

  • 如何使用 Google Drive API 通过服务帐户访问域中的共享文件?

    我一直在尝试从 Python 3 7 脚本访问有关 Google Shared Drive 文件的一些简单信息 上次修改共享云端硬盘上的 Google 表格文件的时间 我创建了一个服务帐户在 GCP Drive API 菜单中 它可以通过
  • Google Drive Api 在发布应用程序后停止工作

    我在我的应用程序中使用 google Drive api 当我使用 apk 文件安装它时 它在调试和发布版本上都能正常工作 但是 如果我在 Playstore 上发布相同版本的 apk 然后从那里下载它 我将无法登录 Google 关于这个
  • Google 服务帐户用户界面

    我怎样才能登录谷歌服务帐户 https developers google com identity protocols OAuth2ServiceAccount使用普通的网络用户界面 例如谷歌驱动器 https www google co
  • Google 脚本图表默认排除标题

    使用以下脚本 function chartCreation var ss SpreadsheetApp getActive var sheet ss getSheetByName Sheet1 var chart sheet newChar
  • 未记录的 Sheet API 限制问题

    我已经看过人们遇到类似问题的帖子 但找不到明确的答案 我尝试使用以下代码行检索 264735 个插槽的二维数组 var optionalArguments majorDimension ROWS valueRenderOption FORM
  • 使用 Android 将文本文件上传到 Google Drive

    编辑 我已将文本设置为字符串 如下所示 字符串文本 你好 我想将其转换为纯文本文件 然后上传到 Google 云端硬盘文件夹 我已经尝试过下面的代码 但它不完整 所以我无法说出出现了什么错误 我正在使用 Google Drive 快速启动
  • 是否可以将 .gs 文件上传到复制的 Google 文档的应用程序脚本项目?

    我复制了一个电子表格供多人使用 并附加了脚本 我的问题是如何修改项目中的脚本 而不必将每个更改复制并粘贴到 gs项目中的文件 This is the base document from which the other versions w
  • 谷歌表格巧妙地将数字格式化为十亿/百万/千[重复]

    这个问题在这里已经有答案了 我有这个数字模板格式 gt 999950 0 0 M lt 999950 0 0 M 0 0 K 但是如何才能让Zeros显示为 呢 我认为你不能 条件只能应用于前两个子格式 如果一个数字匹配多个子格式 它将使用
  • 如何使用谷歌应用程序脚本开发渐进式网络应用程序

    我使用 google app 脚本开发了一些应用程序 并将它们部署为 Web 应用程序 它们都工作正常 然后我决定将它们转换为 PWA 原因是让它们可以安装在智能手机用户的主屏幕上 能够使用推送通知 缓存等 简而言之 PWA 提供的所有优势
  • 如何在 Google 电子表格中使用 Google 脚本从相邻单元格获取值?

    如果之前有人问过这个问题 我深表歉意 但我已经寻找了一个例子 不幸的是我无法找到答案 因此我为什么在这里问 如果我在 Google 电子表格中有一个自定义函数 如果内容是动态生成的 我如何获取单元格的值 当它是固定值时我可以获取该值 但当它
  • 如何使用 Google Apps 脚本编辑现有的 Google 表单项(问题)

    我有一个谷歌脚本来构建谷歌表单 该脚本使用包含问题和相应选项的电子表格填写表单 表格中显示的问题需要定期更新 我希望通过更改电子表格中的问题来更新表单中的问题 如下所示 I use onOpen 对于脚本 以便每次访问表单时 脚本都会重建最
  • 如何检查 Gmail 标签是否有嵌套子标签?

    使用Google Apps脚本 是否有一个功能可以检查Gmail标签是否有嵌套子标签 如果标签有一个或多个子标签 我想将它们从代码序列中排除 没有直接的方法可以从 父 标签获取标签 但是使用简单的方法来获取标签非常简单getUserLabe
  • 将数据从 Google Drive 中的 CSV 文件导入到 Google Sheet

    我使用 SAS 每 24 小时生成两个 CSV 文件 我使用 bat 脚本将生成的 CSV 文件保存在 Google Drive 的文件夹中 CSV 文件被替换 因此文件夹中始终只有这两个文件 CSV 文件以 分隔 并且仅包含三列或四列 我
  • 如何使用应用程序脚本在 Google 电子表格中移动工作表 [重复]

    这个问题在这里已经有答案了 我想使用应用程序脚本在电子表格中移动工作表 怎么做 最好的直播 你看过吗文档 https developers google com apps script reference spreadsheet sprea
  • 图像未显示在从 HTML 创建的 PDF 上

    我想动态创建 PDF 这意味着我将从 Google Drive 获取文件 然后将它们放入 HTML 代码中 并尝试从中创建 PDF 一切工作正常 除了图像没有显示 我现在正在做的是 从 HTML 字符串创建 HtmlOutput 获取该 H
  • 复制电子表格也会复制所有链接的文件

    当我使用库方法时 我希望能够仅复制电子表格及其所有工作表以及所有定义的工作表名称 spreadSheet copy newSSName Or myFile makeCopy newNameOfFile 目前 这些方法复制所有链接的表单和表单
  • 如何使用 OnChange() 触发器

    我有一个电子表格以及该电子表格的主副本 每次用户将数据输入单元格时 它都会获取新数据并放入主副本中 然而最近 我注意到一个用户创建了一个新列 该列未被 OnEdit 捕获 于是我查了一下 看到了去年实现的OnChange 但是 我不知道如何
  • 如何将 HTML 表格导出为 .xlsx 文件

    我有一个关于导出的问题HTML表格 as an xlsx文件 我做了一些工作 现在我可以将其导出为xls 但我需要将其导出为xlsx 这是我的 jsFiddle https jsfiddle net 272406sv 1 https jsf
  • 通过 Apps 脚本强制刷新公式

    有时 更改单元格的值时 电子表格中的公式不会自动刷新 并且单元格上会出现注释以选择该单元格 然后按 CTRL SHIFT E 强制重新加载公式 我想从 Apps 脚本调用此重新加载函数 有没有办法用 Apps 脚本来做到这一点 我尝试了 S
  • 通过 PHP 检测 excel .xlsx 文件 mimetype

    我无法通过 PHP 检测 xlsx Excel 文件的 mimetype 因为它是 zip 存档 文件实用程序 file file xlsx file xlsx Zip archive data at least v2 0 to extra

随机推荐