Импорт zipdata (CSV) из gmail в Google spreadhseet

#csv #google-apps-script #google-sheets

#csv #google-apps-script #google-таблицы

Вопрос:

Я пытаюсь создать электронную таблицу Google, которая автоматически импортирует содержимое прикрепленного файла .zip из моего почтового ящика gmail (с пометкой test). Я абсолютно не программист, но я попытался скопировать и вставить некоторые рабочие фрагменты Google script. Я получаю ошибку «недопустимый аргумент» в строке 26 (извлеченный var = Utilities.unzip (csv);)

Заранее спасибо!

 function getCSV() {


var query = "label:test";

var threads = GmailApp.search(query);
Logger.log('threads len '   threads.length);

Logger.log(query);

for (var i = 0; i < threads.length; i  ) {
var messages = threads[i].getMessages();
Logger.log(messages);    
for (var m = 0; m < messages.length; m  ) {
   var supportStats = [];


var msgs = GmailApp.getMessagesForThreads(threads);
   Logger.log(msgs);
var attachments = msgs[0][0].getAttachments();
   Logger.log(attachments);



var csv =  attachments[0];
var extracted = Utilities.unzip(csv);
var string = extracted[0].getDataAsString(); //INVALID ARGUMENT ERROR
var data = Utilities.parseCsv(string);


var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("import");
sheet.clearContents();
var range = sheet.getRange(1,1, data.length,data[0].length);
range.setValues(data);


}}}
  

Ответ №1:

Судя по сообщению об ошибке, я подумал, что большой двоичный объект файла вложения может иметь неправильный тип mimeType (это application/x-zip или другие?) для использования Utilities.unzip() . Итак, как насчет этого изменения?

Модифицированный скрипт:

Пожалуйста, измените следующим образом.

От:

 var csv =  attachments[0];
  

Для:

 var csv =  attachments[0].setContentTypeFromExtension();
  

или

 var csv =  attachments[0].setContentType("application/zip");
  

Примечание:

  • Судя по вашему сценарию и вопросу, эта модификация предполагает, что attachments[0] извлеченный из msgs[0][0].getAttachments() zip-файла большой двоичный объект. Если это не zip-файл, пожалуйста, измените скрипт.

Ссылки:

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