2016-04-27 20 views
1

私は仕事中に自分のプロセスに多大な貢献をしてくれるコードに取り組んでいます。私は、特定のスプレッドシートに取り込む単一のXML添付ファイルを使用して、毎日自分のGmailのあるラベルに1つのメールを受信します。 (自動化されたXMLを特定のGoogleスプレッドシートに取り込みます

  1. そのラベル内の未読メールから添付ファイルを検索し、私のGmail(LABEL_NAME)に特定のラベルを探します。私は何を構築しようとしていることにできるようになるのGoogleアプリのスクリプトとスクリプトがありますXMLファイル)
  2. Googleドライブの特定のGoogleスプレッドシートに添付ファイル(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()で解析できる文字列を取得する必要があると仮定することができます。それ以外の場合は、添付ファイルの配列をループします。

XML以外の添付ファイルが付いたメッセージが来た場合は、XmlService.parse()をtry-catchブロックに入れることもできます。

関連する問題