Я пытаюсь получить данные из CSV-файла, прикрепленного к моему Gmail, проанализировать его и импортировать с помощью Google Script в Google Sheets.
Проблема в том, что когда я получаю тип содержимого своего вложения, у меня есть это сообщение «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.info(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);
}
}





Если вы хотите использовать if (attachment.getContentType() === "text/csv") {}, необходимо установить mimeType для text/csv. Кроме того, если есть вероятность, что attachment имеет различные mimeTypes, как насчет этой модификации?
Если файл вложения имеет имя файла, включая расширение, как насчет этой модификации? Я думаю, что это более подходящий способ для вашей ситуации, потому что вложенные файлы электронной почты часто имеют имя файла и расширение.
var attachment = message.getAttachments()[0];
attachment.setContentTypeFromExtension(); // Added
Если файл вложения имеет имя файла без расширения, как насчет этой модификации?
var attachment = message.getAttachments()[0];
attachment.setContentType("text/csv"); // Added
Если это не тот результат, который вы хотите, я извиняюсь.