Google apps script 谷歌脚本仅从Gmail收件箱提取500封电子邮件
我正在使用我在网上找到的一个脚本,在我的收件箱(gmail)中按标签提取电子邮件。大约有1300封标有“已完成”的电子邮件 它按预期工作,但它总是在达到500行后停止,或者它从我的gmail中提取了500封带标签的电子邮件。我使用的是商业版的gmail,所以我认为不应该有大小限制,但可能有,我还没有找到任何细节 我已经把代码贴在下面了Google apps script 谷歌脚本仅从Gmail收件箱提取500封电子邮件,google-apps-script,google-sheets,gmail,Google Apps Script,Google Sheets,Gmail,我正在使用我在网上找到的一个脚本,在我的收件箱(gmail)中按标签提取电子邮件。大约有1300封标有“已完成”的电子邮件 它按预期工作,但它总是在达到500行后停止,或者它从我的gmail中提取了500封带标签的电子邮件。我使用的是商业版的gmail,所以我认为不应该有大小限制,但可能有,我还没有找到任何细节 我已经把代码贴在下面了 function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createM
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('Emails')
var item = menu.addItem('Extract Emails','myFunction')
var item = menu.addItem('Delete Emails','clearRange')
.addToUi();
}
function myFunction() {
// Use sheet
var ss = SpreadsheetApp.getActiveSheet();
// Gmail query
var query = "label:COMPLETED";
// Search in Gmail, bind to array
var threads = GmailApp.search(query);
// Loop through query results
for (var i = 0; i < threads.length; i++)
{
// Get messages in thread, add to array
var messages = threads[i].getMessages();
// Used to find max index in array
var max = messages[0];
var maxIndex = 0;
// Loop through array to find maxIndexD = most recent mail
for (var j = 0; j < messages.length; j++) {
if (messages[j] > max) {
maxIndex = j;
max = messages[j];
}
}
// Find data
var mId = messages[maxIndex].getId() // ID used to create mail link
var from = messages[maxIndex].getFrom();
var cc = messages[maxIndex].getCc();
var time = messages[maxIndex].getDate()
var sub = messages[maxIndex].getSubject();
// Write data to sheet
ss.appendRow([from, cc, time, sub, 'https://mail.google.com/mail/u/0/#inbox/'+mId])
}
}
函数onOpen(){
var ui=SpreadsheetApp.getUi();
var menu=ui.createMenu(“电子邮件”)
var item=menu.addItem('Extract email','myFunction')
var item=menu.addItem('Delete email','clearRange')
.addToUi();
}
函数myFunction(){
//使用表
var ss=SpreadsheetApp.getActiveSheet();
//Gmail查询
var query=“标签:已完成”;
//在Gmail中搜索,绑定到数组
var threads=GmailApp.search(查询);
//循环查询结果
对于(var i=0;i最大值){
maxIndex=j;
max=消息[j];
}
}
//查找数据
var mId=messages[maxIndex].getId()//用于创建邮件链接的ID
var-from=messages[maxIndex].getFrom();
var cc=messages[maxIndex].getCc();
var time=messages[maxIndex].getDate()
var sub=messages[maxIndex].getSubject();
//将数据写入工作表
ss.appendRow([from,cc,time,sub,'https://mail.google.com/mail/u/0/#inbox/“+mId])
}
}
任何帮助都将不胜感激。非常感谢。
这是我的工作表的复印件,以及它是如何设置的 替换
var threads=GmailApp.search(查询)怎么样
withvar threads=GmailApp.getInboxThreads()
刚刚尝试了你的建议。但现在它只从我的收件箱中获取电子邮件。不是我的Gmail中指定的文件夹。哦,你确实想要这个标签。顺便说一下,你的收件箱中没有文件夹,它们是标签。在500条左右的帖子中可能会有1300封电子邮件。抱歉,我会编辑上面的帖子来反映这一点。是的,我想从我的gmail中获取所有标有“已完成”的电子邮件。我有超过1300封标记为已完成的个人电子邮件。我只需要检索电子邮件中第一条消息的主题和日期,这是否回答了您的问题?