我試圖抓取一些關於我的Gmail帳戶的報告,除非我嘗試使用正則表達式時,一切看起來都很好。我的目標是從報告中獲取信息,並將其粘貼到電子表格中,但是做了一些測試,我發現有時它不會從gmail中檢索任何東西(如果我將電子郵件正文粘貼到電子表格中,我會看到兩個或三個空白,二十個電子郵件,再次空白),所以我得到NULL作爲正則表達式的結果。GmailApp抓取電子郵件
任何人都可以解釋我什麼我做錯了嗎?這是我第一週使用Google App腳本引擎。
在此先感謝。
這是代碼。
function recopilarInformes() {
var threads = GmailApp.search('label:informes');
var messages;
var ContentEmail;
var reportDate,CFree,FFree;
for (var i = 0; i < 20 /*threads.length*/; i++) {
messages = threads[i].getMessages()
reportDate = messages[0].getSubject().replace("Informe ","");
ContentEmail = messages[0].getBody();
CFree = /(\d+.\d+)\s.*GB/g(ContentEmail);
FFree = /F<.td><td\s\w+\W+\w+.\w+.>\s(\d+.\d+)/(ContentEmail);
Logger.log(reportDate);
Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail));
}
編輯
我得出的結論,儘管我不知道如何準確使用從谷歌應用程序腳本Gmail的對象,正則表達式是不是acomplys我的目標的最佳途徑。
下面是當前的代碼
function recopilarInformes() {
var threads = GmailApp.search('label:informes');
Logger.log(threads);
Logger.log(threads[0].getMessages());
Logger.log(threads[0].getMessages().length);
var messages;// = threads[0].getMessages();
var ContentEmail;// = messages[0].getBody();
var reportDate,CFree,FFree;
for (var i = 0; i < threads.length; i++) {
messages = threads[i].getMessages()
reportDate = messages[0].getSubject().replace("Informe ","");//creo si hubiera más mensajes en la conversación (thread) habría más entradas en este array, que ahora mismso solo contiene una cosa
ContentEmail = messages[0].getBody();
Logger.log(reportDate);
// Logger.log(/(\d+.\d+)\s.*GB/g(ContentEmail));
actualData = ContentEmail.split("------------ Espacio en las unidades -----------")[1];
actualData = actualData.replace(/([^ 0-9,])/g,"").trim().replace(/\s+/g," ").split(" ");
insertValue([reportDate,actualData[0],actualData[1]]);
}
}
我在應用程序腳本標記中更改了您的應用程序引擎標記。 – voscausa
謝謝,我不確定哪一個是正確的。 – Danielo515
我不清楚你是否遇到正則表達式或GmailApp的問題。你在這裏記錄兩行,日期和內容。每20封電子郵件都會跳過這兩行嗎?或者只有內容行被跳過? –