2016-04-27 93 views
1

我正在研究一段代碼,可以爲我的工作過程做出很大貢獻。我每天會收到一封郵件給我的Gmail中的某個標籤,並附帶一個xml附件,我希望將它附加到特定的電子表格中。我正在試圖建立與谷歌應用程序的腳本一個腳本,將能夠:將自動XML提取到特定的Google電子表格中

  1. 定位特定的標籤,在我的Gmail(LABEL_NAME)
  2. 查找未讀郵件該標籤內的附件( XML文件)
  3. 在我的谷歌驅動器中獲取附件數據(XML)到特定的谷歌電子表格中。

我的代碼如下所示:

function RetrieveFeedAttachment() { 
    var label = GmailApp.getUserLabelByName("Label_Name"); 
    var threads = label.getThreads(); 
    var feed = SpreadsheetApp.openById("The_Specific_Spreadsheet_ID").getSheetByName("Spreadsheet_Name"); 
    feed.clearContents(); 

    for (var i = 0; i < threads.length; i++) { 
    if (threads[i].isUnread()) { 
     var msg = GmailApp.getMessagesForThread(threads[i]); 
     var xmlDoc = XmlService.parse(msg[0].getAttachments()); 
     for(var j = 0; j < msg.length; j++) { 
     feed.appendRow(xmlDoc.getContent(j)); 
     } 
    threads[i].markRead(); 
    } 
    } 
} 

當我運行該腳本調試它給我下面的通知「錯誤在第1行:內容是不允許在序言中(第10行,文件」代碼「)」

謝謝你的建議\幫助!

回答

1

方法getAttachments()返回一個附件數組。這不是XmlService可以解析的XML文件。方法XmlService.parse()接受字符串

如果您可以假設恰好有一個附件,然後

msg[0].getAttachments()[0].getDataAsString() 

應該得到你,你可以用XmlService.parse()解析字符串。否則,請在附件數組上循環。

您也可能想將XmlService.parse()放入try-catch塊中,以防出現帶有非XML附件的消息。

相關問題