我收到包含excel文件作为附件的夜间电子邮件,但发送公司没有定义内容类型,因此文件以内容类型= application / octet-stream
到达我的脚本正在尝试将文件作为Google表格上传到我的Google驱动器,但上传失败,因为脚本不知道它是什么类型的文件。
我尝试转发附件并为其提供正确的内容类型,但转发的文件也以八位字节流的形式到达。
我能做些什么来克服这个问题?
我使用的代码的要点如下:
var ureadMsgsCount = GmailApp.getInboxUnreadCount();
if (ureadMsgsCount > 0) {
var threads = GmailApp.search("Excel Files")
for (var i = 0; i < threads.length; i++) {
if (threads[i].isInInbox()) {
messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
if (messages[j].isUnread()) {
var attachments = messages[j].getAttachments();
for (var k = 0; k < attachments.length; k++) {
// Is the attachment an excel file
var excelFile = attachments[k];
var fileName = attachments[k].getName();
var contentType = attachments[k].getContentType();
if (fileName.indexOf("xls") > -1) {
var folderId = getFolderID('saved files');
var resource = {
title: fileName.replace(/.xls?/, ""),
mimeType: 'application/vnd.google-apps.spreadsheet',
parents: [{ id: folderId }]
};
Drive.Files.insert(resource, excelFile);
}
}
}
}
}
}
}
非常感谢。
引发的错误是“GoogleJsonResponseException:提供的mime类型无效”
答案 0 :(得分:0)
对于遇到此问题的其他人,我可以使用GmailApp类中的 setContentTypeFromExtension()方法解决此问题。
只需替换
var excelFile = attachments[k];
var fileName = attachments[k].getName();
var contentType = attachments[k].getContentType();
与
var excelFile = attachments[k].setContentTypeFromExtension();
var fileName = attachments[k].getName();
var contentType = excelFile.getContentType();
这当然可以用更少的行编写,但在调试中运行时使用单独的值会很方便。