Pu sh содержимое файлов txt / csv, извлеченное из вложения электронной почты в электронную таблицу - PullRequest
0 голосов
/ 25 января 2020

В основном я беру электронные письма, которые используют определенный ярлык, затем я беру вложение из электронного письма, которое является файлом zip, затем я распаковываю его содержимое, которое является файлом csv, как мне сделать pu sh все csv содержимое файла в электронную таблицу Я совершенно новый, поэтому я застрял там.

function grabAttachments(){

var label = GmailApp.getUserLabelByName("mylabel"); // The label we are trying to find
var threads = label.getThreads(); // grabs all the mails containing that label
var messages = threads[0].getMessages(); 



var attachType = messages[0].getAttachments(); //assigns attachment array to value
//Logger.log(attachType[0].getName()); //Logs Gets Attachments Name

attachType[0].getContentType(); 

var tozip = attachType[0].setContentTypeFromExtension(); // sets the content type based on the extension.
var unZip = Utilities.unzip(tozip); //assigns the unzipped file to a new variable

Logger.log(unZip[0].getContentType()); // logs the content type from the unzipped value

1 Ответ

1 голос
/ 25 января 2020

Вы можете использовать встроенный метод Utilities.parseCsv() для преобразования данных CSV в таблицу.

var table = Utilities.parseCsv(unZip[0].getDataAsString());

Затем запишите это в электронную таблицу, используя Range.setValues(). Очень простой способ добавить данные к существующему листу - использовать Sheet.getLastRow() при определении диапазона .

function grabAttachments(){
  var label = GmailApp.getUserLabelByName("mylabel"); // The label we are trying to find
  var threads = label.getThreads(); // grabs all the mails containing that label
  var messages = threads[0].getMessages(); 

  var attachType = messages[0].getAttachments(); //assigns attachment array to value
  //Logger.log(attachType[0].getName()); //Logs Gets Attachments Name
  attachType[0].getContentType(); 

  var tozip = attachType[0].setContentTypeFromExtension(); // sets the content type based on the extension.
  var unZip = Utilities.unzip(tozip); //assigns the unzipped file to a new variable

  Logger.log(unZip[0].getContentType()); // logs the content type from the unzipped value

  // Parse the CSV data and write to spreadsheet
  var table = Utilities.parseCsv(unZip[0].getDataAsString());
  var sheet = SpreadsheetApp.getActive().getSheetByName("Sheet1"); // Assuming a container-bound script
  sheet.getRange(
    startRow = sheet.getLastRow() + 1, // Last row has content, so write on the next row
    startColumn = 1, // Start printing in Column A
    numColumns = table.length,
    numRows = table[0].length
  ).setValues(table);
}

Если вы не используете сценарий с привязкой к контейнеру , вы не сможете использовать SpreadheetApp.getActive(), поэтому вам нужно будет использовать либо SpreadsheetApp.openById() или SpreadsheetApp.openByUrl().

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