Импорт данных через лист Excel в лист Google с помощью Google Script

Я пытаюсь получить данные из 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);

  }

}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
355
1

Ответы 1

Если вы хотите использовать if (attachment.getContentType() === "text/csv") {}, необходимо установить mimeType для text/csv. Кроме того, если есть вероятность, что attachment имеет различные mimeTypes, как насчет этой модификации?

Шаблон 1:

Если файл вложения имеет имя файла, включая расширение, как насчет этой модификации? Я думаю, что это более подходящий способ для вашей ситуации, потому что вложенные файлы электронной почты часто имеют имя файла и расширение.

var attachment = message.getAttachments()[0];
attachment.setContentTypeFromExtension(); // Added
  • Важным моментом этой модификации является то, что имя файла должно иметь расширение. Если файл не имеет расширения, mimeType становится нулевым.

Шаблон 2:

Если файл вложения имеет имя файла без расширения, как насчет этой модификации?

var attachment = message.getAttachments()[0];
attachment.setContentType("text/csv"); // Added
  • Важным моментом этой модификации является принудительное изменение mimeType файла.

Примечание:

  • В приведенных выше модификациях я рассказал о методе изменения mimeType. Я не уверен в вашем имени файла и подробной ситуации. Поэтому, пожалуйста, измените свой сценарий для вашей ситуации, используя вышеуказанные методы. Если у вас есть какие-либо вопросы, не стесняйтесь сказать мне.

Использованная литература:

Если это не тот результат, который вы хотите, я извиняюсь.

Другие вопросы по теме