2016-09-26 5 views
1

Я играл с этим скриптом последние пару недель. Цель сценария заключается в том, чтобы пройти через почтовый ящик отчетов, вывести данные отчетов из вложений электронной почты, скопировать в электронную таблицу google и затем перемаркировать электронные письма, чтобы удалить их из папки «Входящие», чтобы предотвратить случайные отчеты о двойном копировании.Скрипт Google Apps - перекрестные письма

Сценарий функции в следующем порядке:

  1. искать новые сообщения электронной почты в папке Входящие с вложениями
  2. Копирование данных вложений
  3. Вставить в электронную таблицу в следующем открытом ряду
  4. переразметьте письмо с «Отчет» вместо «Входящие» для перемещения всех отчетов в папку отчетов

Я успешно выполненные шаги 1 - 3, но для жизни меня я не могу заставить перемаркировать работу. Когда я запускаю отладку в консоли Google Apps, он не возвращается с ошибками. Pasted Ниже приводится отрывок из сценария делает переобозначение:

for (var i = 0; i < myLabel.length; i++) { 
    labels = myLabel[i].getLabels(); 
    for (var j = 0; j < labels.length; j++) { 
     labels[j].addLabel("test_2"); 
     labels[j].removeLabel("Test"); 
    } 
    } 

Ниже приводится полный сценарий, я бег.

function getCSV() { 


    // Create variable that looks for Gmails in the main inbox 
    var myLabel = GmailApp.getUserLabelByName("test"); 
    Logger.log("myLabel:",myLabel); 

    // Create variable that is filled with all threads within Inbox label 
    var threads = myLabel.getThreads(); 
    Logger.log("threads:",threads); 

    // Retrieves all messages in the specified thread 
    var msgs = GmailApp.getMessagesForThreads(threads); 
    Logger.log("msgs:",msgs); 

    // Uses active sheet the script is implemented on 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("test"); 

    // Grabs CSV data from attachments and pastes into next available row in Spreadsheet 
    for (var i = 0; i < threads.length; i++) { 
    var messages = threads[i].getMessages(); 
    for (var j = 0; j < messages.length; j++) { 
     var attachments = messages[j].getAttachments(); 
     Logger.log("attachments:",attachments); 
     var csvData = Utilities.parseCsv(attachments[j].getDataAsString(), ","); 
     Logger.log(csvData); 
     for (var k = 1; k < csvData.length; k++) { 
     var dataPaste = sheet.appendRow(csvData[k]); 
     Logger.dataPaste; 
     } 
    } 
    } 
    // Removes Inbox Label and Adds Report Label 
    for (var i = 0; i < myLabel.length; i++) { 
    labels = myLabel[i].getLabels(); 
    for (var j = 0; j < labels.length; j++) { 
     labels[j].addLabel("test_2"); 
     labels[j].removeLabel("Test"); 
    } 
    } 
} 

ответ

0

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

function getCSV() { 


    // Associated Inbox label and Report Label with variables 
    var myInboxLabel = GmailApp.getUserLabelByName("Test"); 
    var myReportLabel = GmailApp.getUserLabelByName("test_2"); 

    // Create variable that is filled with all threads within Inbox label 
    var threads = myInboxLabel.getThreads(); 
    Logger.log("threads:" + threads); 

    // Retrieves all messages in the specified thread 
    var msgs = GmailApp.getMessagesForThreads(threads); 
    Logger.log("msgs:" + msgs); 

    // Uses active sheet the script is implemented on 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("test"); 
/* Script to pull data from CSV that is NOT zipped 
    // Grabs CSV data from attachments and pastes into next available row in Spreadsheet 
    for (var i = 0; i < threads.length; i++) { 
    var messages = threads[i].getMessages(); 
    for (var j = 0; j < messages.length; j++) { 
     var attachments = messages[j].getAttachments(); 
     Logger.log("attachments:" + attachments); 
     var csvData = Utilities.parseCsv(attachments[j].getDataAsString(), ","); 
     Logger.log("csvData:" + csvData); 
     for (var k = 1; k < csvData.length; k++) { 
     var dataPaste = sheet.appendRow(csvData[k]); 
     Logger.dataPaste; 
     } 
    } 
    } 
*/ 

// Grabs CSV within a zip folder and pastes into next available row in Spreadsheet 
for (var i = 0; i < threads.length; i++) { 
    var messages = threads[i].getMessages(); 
    for (var j = 0; j < messages.length; j++) { 
     var attachments = messages[j].getAttachments(); 
     var extracted = Utilities.unzip(attachments[j]); 
     var csvData = Utilities.parseCsv(extracted[j].getDataAsString(), ","); 
     Logger.log(csvData); 
     for (var k = 1; k < csvData.length; k++) { 
     var dataPaste = sheet.appendRow(csvData[k]); 
     Logger.dataPaste; 
     } 
    } 
    } 
    // Removes Inbox Label and Adds Report Label 
    for (var x in threads) { 
    var thread = threads[x]; 
    thread.removeLabel(myInboxLabel); 
    thread.addLabel(myReportLabel); 
    } 
}