我正在尝试从Gmail附件中的csv文件中获取数据,进行解析并将其导入Google表格中的Google脚本中。
问题是当我获取附件的内容类型时,我收到此消息“ application / octet-stream”,而不是CSV,因此我认为算法不能在if条件下继续使用。
您有建议我为什么没有正确的文件类型吗?
非常感谢!
这是代码:
function importCSVFromGmail() {
var threads = GmailApp.search("Money Transfer Tracking - Tickets");
var message = threads[0].getMessages()[0];
var attachment = message.getAttachments()[0];
console.log(attachment.getContentType())
// Is the attachment a CSV file
if (attachment.getContentType() === "text/csv") {
var sheet = SpreadsheetApp.getActiveSheet();
var csvData = Utilities.parseCsv(attachment.getDataAsString(), ";");
// Remember to clear the content of the sheet before importing new data
sheet.clearContents().clearFormats();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
}
答案 0 :(得分:0)
如果要使用if (attachment.getContentType() === "text/csv") {}
,则需要设置text/csv
的mimeType。另外,如果attachment
可能具有各种mimeType,那么该修改如何?
如果附件文件的文件名包括扩展名,该修改如何?我认为这是更适合您情况的方法,因为电子邮件的附件文件通常具有文件名和扩展名。
var attachment = message.getAttachments()[0];
attachment.setContentTypeFromExtension(); // Added
如果附件文件的文件名不包含扩展名,那么该修改如何?
var attachment = message.getAttachments()[0];
attachment.setContentType("text/csv"); // Added
如果这不是您想要的结果,我表示歉意。