Импорт данных через лист Excel в лист Google с помощью скрипта Google - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь получить данные из csv-файла во вложении в моем Gmail, проанализировать и импортировать их с помощью Google Script в Google Sheets.

Проблема возникает, когда я получаю тип содержимого моего вложения.у меня есть это сообщение "application / octet-stream", а не CSV, поэтому я думаю, что алгоритм не включается, если условие.

У вас есть предложение, почему я не могу получить правильный тип файла?

Большое спасибо!

Вот код:

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);

  }

}

1 Ответ

0 голосов
/ 02 марта 2019

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

Pattern 1:

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

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

Pattern 2:

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

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

Примечание:

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

Ссылки:

Если это не тот результат, который вам нужен, я прошу прощения.

...