Добавление столбца даты в массив, импортированный из файла Gmail CSV Скрипт Google Apps - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь автоматически импортировать ежедневный отчет, отправленный по электронной почте из сторонней системы (в которой я не могу изменить отправленные значения), на лист Google, чтобы создать отчет с течением времени.

Приведенный ниже код работает и правильно импортирует данные, однако файл CSV не содержит дату, из-за которой отчетность становится невозможной.

Я могу получить дату из электронного письма, и снова это работает, однако я не могу добавить это к данные записываются на лист. В идеале код должен добавить дополнительную запись в начало каждого элемента массива с датой.

/**
 * import CSV data directly from gmail attachments
 */
function importCSVFromGmail() {

  var threads = GmailApp.search('subject:Agent Performance report for newer_than:1d');

  // create empty array to hold data
  var allData = [];

  // get the threads that match this search
  threads.forEach(function(thread) {

    var messageCount = thread.getMessageCount();

    // get the messages in a thread
    var messages = thread.getMessages();

    messages.forEach(function(message) {

      var attachments = message.getAttachments();

      attachments.forEach(function(attachment) {

        // check attachment is CSV
        if (attachment.getContentType() === 'text/csv') {

          // extract the data
          var csvData = Utilities.parseCsv(attachment.getDataAsString());
          var date = Utilities.formatDate(new Date(message.getDate()), "GMT+1", "MM/dd/yyyy");

          allData = allData.concat(csvData);

        }
      });  
      Logger.log(allData);
    }); 
  });

  // paste into Google Sheet
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow();
  sheet.getRange(lastRow + 1, 1, allData.length, allData[0].length).setValues(allData);
}

Образец данных CSV

Agent,Tickets assigned,Tickets resolved,Tickets reopened,Tickets reassigned,First response SLA %,Resolution SLA %,FCR %,Private notes,Responses,Average 1st response time,Average response time,Average resolution time
Agent 1,1,2,,1,,100,100,,1,,,17:32:49
Agent 2,11,14,3,,88,86,67,3,15,06:09:35,04:04:20,19:44:18
Agent 3,18,25,7,,100,80,68,6,14,01:28:29,02:35:47,74:48:48

Ожидаемый результат - просто данные в файле CSV с датой в первом столбце

DD/mm/yyyy,Agent,Tickets assigned,Tickets resolved,Tickets reopened,Tickets reassigned,First response SLA %,Resolution SLA %,FCR %,Private notes,Responses,Average 1st response time,Average response time,Average resolution time
DD/mm/yyyy,Agent 1,1,2,,1,,100,100,,1,,,17:32:49
DD/mm/yyyy,Agent 2,11,14,3,,88,86,67,3,15,06:09:35,04:04:20,19:44:18
DD/mm/yyyy,Agent 3,18,25,7,,100,80,68,6,14,01:28:29,02:35:47,74:48:48

1 Ответ

1 голос
/ 16 апреля 2020

Используйте Array.unshift для каждой строки:

const csvData = Utilities.parseCsv(attachment.getDataAsString());
const date = Utilities.formatDate(message.getDate(), "GMT+1", "MM/dd/yyyy");
csvData.forEach(row => row.unshift(date));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...