我將特定標籤的電子郵件導入電子表格,但在每次腳本運行時加載所有電子郵件效率不高。將gmail消息導入電子表格並在下一個腳本運行時只會獲得新消息
我已經搜索和搜索,但找不到解決方案只獲取新消息。
我希望能夠採取的方法是: 檢查電子表格與電子郵件 - >檢查信息量的lastrow。 用新消息追加行(「消息」 - 最後一行)。
我希望有人對此有一個解決方案,這將對我想要創建的定稿產生巨大影響!提前致謝!
我是小白編碼器,但創建下面的腳本來獲取消息的量:
我將特定標籤的電子郵件導入電子表格,但在每次腳本運行時加載所有電子郵件效率不高。將gmail消息導入電子表格並在下一個腳本運行時只會獲得新消息
我已經搜索和搜索,但找不到解決方案只獲取新消息。
我希望能夠採取的方法是: 檢查電子表格與電子郵件 - >檢查信息量的lastrow。 用新消息追加行(「消息」 - 最後一行)。
我希望有人對此有一個解決方案,這將對我想要創建的定稿產生巨大影響!提前致謝!
我是小白編碼器,但創建下面的腳本來獲取消息的量:
你可以有一個標籤(比如計算)
function messageCount(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var label = ss.getRange('A1').getValue().toString();
var array = new Array();
var threads = GmailApp.search("in:" + label);
for(var n in threads){
var msg = threads[n].getMessages();
var threadCount = threads[n].getMessageCount();
array.push(threadCount);
}
var count = 0;
for(var i = 0; i < array.length; i++){
count = count + array[i];
}
var currentTransactions = count;
Logger.log(currentTransactions);
}用於跟蹤處理消息的。將標籤應用於已計數的線程,並在下一次運行中忽略它們。
function messageCount(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var label = ss.getRange('A1').getValue().toString();
var processed = GmailApp.getUserLabelByName("Counted") || GmailApp.createLabel("Counted");
var threads = GmailApp.search("-in:Counted in:" + label);
var count = 0;
for(var t in threads){
count += threads[t].getMessageCount();
threads[t].addLabel(processed);
}
Logger.log(count);
}
謝謝阿米特!不得不說,你的網站labnol.org是我的起始頁面:)當我完成我的「應用程序」時,我提交了我的發現。 – PdB
我已經使用了不同的解決方案。 我不確定電子郵件ID是否有邏輯順序,所以我認爲唯一合理的做法是按JS時間(毫秒)對電子郵件進行排序。
我所做的是: - 獲取所有電子郵件並將它們轉換爲對象。財產關鍵是JS時間。 - 將所有對象放在工作表 - 下次運行時,檢查工作表中的長度與新郵件批次 之間是否存在差異 - 如果是這樣:oldbatch-newbatch(length)。 - 排序與JS時間 新的陣列 - 符合JS的時間與屬性鍵和執行來自新接收到的消息
它可能不是efficientt返回mailid的一個對象的方法,但它能夠完成任務。您可以在這裏檢查代碼(abnMailMoneyFetcher()):GAS
爲什麼不將線程的ID存儲在工作表或PropertiesService中? https://developers.google.com/apps-script/reference/gmail/gmail-thread#getId()如果您抓取的消息的ID已存在於存儲的ID數組中,請跳過該循環中的迭代。 –
感謝您的解決方案!我試試看看哪一個最適合,併發布我的發現! – PdB