Как импортировать более 2 тыс. Строк файла .csv - PullRequest
0 голосов
/ 21 ноября 2018

Мне действительно нужна помощь.Здесь ситуация.Каждый понедельник я получаю файл .csv на мою учетную запись Gmail.Обычно это> 3 тыс. Строк и содержит в основном числовые данные.

До сих пор я загружал этот файл .csv и копировал / вставлял в Google Sheets.Теперь я хочу автоматизировать эту задачу.

Я искал в интернете и нашел этот симпатичный скрипт для Google Sheets:

function getCSV() {
  // Abrir a planhilha e limpar ela
  var sheetID = SpreadsheetApp.getActiveSpreadsheet().getId();
var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = SpreadsheetApp.openById(sheetID);
  var first = ss.getSheetByName("Agrupados_por_plano");
  first.clearContents();
  // 

 var myLabel = GmailApp.getUserLabelByName("Pulse MetaBase"); // specify label in gmail
 var threads = myLabel.getThreads(0,1);
 var msgs = GmailApp.getMessagesForThreads(threads);
 var attachments = msgs[0][0].getAttachments();
  //var content = attachments.getContentType();
  Logger.log(attachments[0].getSize());
 // 

 var csv =  attachments[0].getBlob().getDataAsString();


 var data = Utilities.parseCsv(csv);

var a = data.length ;
var b = data[0].length; 


  var range = first.getRange(1,1,data.length,data[0].length);
range.setValues(data);



}

Скрипт работает довольно хорошо, и у меня нет ошибок.Но он импортирует только первые 2000 строк данных.Например, у меня есть файл с 2780 строками и 5 столбцами.Используемый мной скрипт импортирует только 2000 строк и 5 столбцов, а исходный размер файла (250 кБайт) уменьшается до 192 кБайт.

Как бы я решил это?Это ограничение метода getAttachment ()?

1 Ответ

0 голосов
/ 22 ноября 2018

Я выяснил, в чем проблема.Все дело в том, чтобы обратить внимание на код, над которым вы работаете.Мой сценарий получал одно и то же сообщение снова и снова, и это конкретное сообщение содержит вложения .csv с ровно 2000 строк данных.Так что я сделал?Просто добавьте несколько строк кода, чтобы получать последнее сообщение в ветке каждый раз, когда запускается мой скрипт.

function getThreadsGmail()
{
  // pegar o último email do thread e retornar arquivo anexo
  var myLabel = GmailApp.getUserLabelByName("Meta_Base_Reports"); // especificar lable em Gmail
 var threads = myLabel.getThreads();
 
  
   var msgs = threads[0].getMessages();
  var lastMsg = msgs[msgs.length - 1]; // get the last message in the thread
  var attachments = lastMsg.getAttachments();
  return attachments;
}

Спасибо, ребята!=)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...