我试图使用Google脚本从Gmail附件导入xlsx文件到Google (作为Google )。我尝试在GAS中使用,但是这样做会导致以下错误:
对drive.files.insert的API调用失败,错误:提供了无效的mime类型
我发现Gmail附件被导入到Google脚本中,而不是application/vnd.ms-excel,我认为这就是问题所在。但是,附件是一个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转换成一个工作表?谢谢!
发布于 2020-03-16 00:37:38
blob是application/octet。blob实际上是一个XLSX文件。blob of application/octet与Drive.Files.insert()一起使用时,会发生Invalid mime type provided错误。如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一。
问题和解决办法:
blob是application/octet时,Drive.Files.insert({title: 'Converted Spreadsheet', parents: [{id: "root"}], mimeType: MimeType.GOOGLE_SHEETS}, blob, {convert: true})时,会发生Invalid mime type provided错误。Drive.Files.insert({title: 'Converted Spreadsheet', parents: [{id: "root"}]}, blob, {convert: true})时,不会发生错误。但是创建的文件的mimeType是application/octet。这样,该文件就不能直接在Google上打开。在这种情况下,需要将已创建文件的mimeType更改为XLSX。我认为这是因为This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.。参考
从上述情况出发,在这个答案中,我建议在运行XLSX之前将XLSX的mimeType设置为blob。
修改脚本:
修改脚本时,请按以下方式修改。
发自:
var blob =attachment至:
var blob = attachment.setContentType(MimeType.MICROSOFT_EXCEL); // MimeType.MICROSOFT_EXCEL or MimeType.MICROSOFT_EXCEL_LEGACY或
至:
如果blob具有带有扩展名的文件名,则还可以使用以下脚本。在这种情况下,mimeType是由文件名的扩展自动给出的。
var blob = attachment.setContentTypeFromExtension();注意:
mimeType: MimeType.GOOGLE_SHEETS在file中,结果都是一样的。an xlsx file from a Gmail Attachment。你说the Gmail attachment is imported to Google Apps Script as application/octet instead of application/vnd.ms-excel。application/vnd.openxmlformats-officedocument.spreadsheetml.sheet。application/vnd.ms-excel。
参考文献:
如果这不能解决你的问题,我道歉。
发布于 2020-03-15 16:21:10
这些
parents: [{id: folderId}],
mimeType: MimeType.GOOGLE_SHEETS请参考输入文件。见医生来了。你应该跳过这些。
这段代码片段适用于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});
}https://stackoverflow.com/questions/60693366
复制相似问题