Google apps script 从Gmail到Google Sheets的XLSX:无效的mime类型。内容类型似乎是应用程序/八位字节?
我正在尝试使用GoogleApps脚本将一个xlsx文件从Gmail附件导入GoogleDrive(作为GoogleSheet)。我尝试在GAS中使用Advanced Drive API,但这样做会导致以下错误: API调用drive.files.insert失败,错误为:mime类型无效 提供 我发现Gmail附件是作为application/octet而不是application/vnd.ms-excel导入到GoogleApps脚本的,我认为这就是问题所在。然而,附件是一个xlsx文件,我不明白为什么它会被识别为application/octet 请记住,我想将XLSX转换为Google表单。因此,我需要MimeType。 代码如下:Google apps script 从Gmail到Google Sheets的XLSX:无效的mime类型。内容类型似乎是应用程序/八位字节?,google-apps-script,google-sheets,google-drive-api,gmail,xlsx,Google Apps Script,Google Sheets,Google Drive Api,Gmail,Xlsx,我正在尝试使用GoogleApps脚本将一个xlsx文件从Gmail附件导入GoogleDrive(作为GoogleSheet)。我尝试在GAS中使用Advanced Drive API,但这样做会导致以下错误: API调用drive.files.insert失败,错误为:mime类型无效 提供 我发现Gmail附件是作为application/octet而不是application/vnd.ms-excel导入到GoogleApps脚本的,我认为这就是问题所在。然而,附件是一个xlsx文件,我
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转换为工作表?
谢谢 这些
parents: [{id: folderId}],
mimeType: MimeType.GOOGLE_SHEETS
请参阅输入文件。看见你应该跳过这些
这段代码对我来说适用于Google Drive API v2:
function abc() {
var mail = GmailApp.search("SEARCH_TERM")[0];
var msg = mail.getMessages()[0];
var blob = msg.getAttachments()[0];
var file = {
title: 'Converted Spreadsheet'
};
Drive.Files.insert(file, blob, {convert: true});
}
- 在您的情况下,附件文件的
的mimeType是blob
application/octet
实际上是一个XLSX文件blob
- 当
的application/octet
与blob
一起使用时,出现提供的Drive.Files.insert()
无效mime类型的错误
- 您希望将上述blob的XLSX文件转换为Google电子表格,并将其创建为文件
- 您希望使用谷歌应用程序脚本实现这一点
- 当
的mimeType为blob
时,application/octet
- 当运行
时,出现提供的Drive.Files.insert({title:'Converted Spreadsheet',parents:[{id:'root}],mimeType:mimeType.GOOGLE\u SHEETS},blob,{convert:true})
无效mime类型的错误
- 当运行
时,不会发生错误。但是创建的文件的mimeType是Drive.Files.insert({title:'Converted Spreadsheet',父项:[{id:'root}]},blob,{convert:true})
。这样,文件就不能直接在谷歌硬盘上打开。在这种情况下,需要将已创建文件的mimeType更改为XLSX。我认为这是因为application/octet
李>这个字段可以留空,mimetype将根据上传内容的MIME类型确定。
- 当运行
Drive.Files.insert
之前,将XLSX的mimeType设置为blob
修改脚本:
修改脚本时,请按以下方式修改
发件人:
致:
或
致:
如果blob
的文件名带有扩展名,则还可以使用以下脚本。在这种情况下,mimeType由文件名的扩展名自动给出
var blob = attachment.setContentTypeFromExtension();
注:
- 在上面修改的脚本中,使用和不使用
在mimeType:mimeType.GOOGLE\u SHEETS
文件中的结果是相同的
- 在你的问题中,你说的是来自Gmail附件的xlsx文件。你说,Gmail附件作为application/octet而不是application/vnd.ms excel导入谷歌应用程序脚本。
- 如果文件是XLSX文件,则mimeType是
application/vnd.openxmlformats officedocument.spreadsheetml.sheet
- 如果fie是XLS文件,则模拟类型为
application/vnd.ms excel
- 如果文件是XLSX文件,则mimeType是
如果这不能解决您的问题,我很抱歉。请尝试删除mimetype值。
var blob = attachment.setContentType(MimeType.MICROSOFT_EXCEL); // MimeType.MICROSOFT_EXCEL or MimeType.MICROSOFT_EXCEL_LEGACY
var blob = attachment.setContentTypeFromExtension();