Google 脚本在提取到工作表时不会移动到垃圾箱并将电子邮件包括在垃圾箱中
Google Script Not Moving To Trash And Including Emails In Trash when Extracting to Sheets
我在菜单中添加了一个允许用户点击的功能"Extract Emails"
- 这将 gmail 提取到活动的预格式化电子表格
问题:
- 我一直在提取相同的电子邮件...所以我做了一些事情
1-我在 Gmail 中有一个基于特定主题的过滤器
1. 给这些邮件加星标
2.应用特定标签
2-我在提取时和循环后搜索 is:starred - 我删除了星星 - 我可以刷新我的收件箱并看到星星出现和消失
3-如果我 运行 这个,然后收到 4 封电子邮件 - 并且 运行 马上又 - 脚本 运行s,它说完成并且没有新的进来。
但是一旦收到 1 封新电子邮件 - 它自己加注星标,合并到该线程中
- 如果我再次单击提取电子邮件 - 我会收到该线程中的每封电子邮件以及新的
- 即使线程中的其他消息未加星标
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("is:starred TannerWebOppCRM");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat])
GmailApp.unstarMessage(messages[j]);
}
threads[i].removeLabel(label);
threads[i].moveToTrash();
}
}
我试图将项目移至垃圾箱 - 但它们没有移动。另外,当我手动将项目移到垃圾箱时 - 它们仍然通过了。
我已经阅读了半天的解决方案,但似乎无法确定只会收到新消息的脚本。
在这种情况下 - 一旦我获取数据 - 电子邮件可以是 purged/archived/unlabeled - 任何东西并且一旦加载 - 我总是有时间向前......意味着如果用户点击 "Get Emails"星期三下午 4 点,我可以从那时起开始搜索电子邮件数据...
getUserLabelByName() 方法检索给定标签名称的标签。它不能用于执行搜索。此外,无论如何您都无需取消线程的星号,因为您正在将它移至垃圾箱。
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var threads = GmailApp.search("is:starred in:TannerWebOppCRM");
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++) {
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat]);
}
threads[i].moveToTrash();
}
}
我在菜单中添加了一个允许用户点击的功能"Extract Emails" - 这将 gmail 提取到活动的预格式化电子表格 问题: - 我一直在提取相同的电子邮件...所以我做了一些事情
1-我在 Gmail 中有一个基于特定主题的过滤器 1. 给这些邮件加星标 2.应用特定标签 2-我在提取时和循环后搜索 is:starred - 我删除了星星 - 我可以刷新我的收件箱并看到星星出现和消失 3-如果我 运行 这个,然后收到 4 封电子邮件 - 并且 运行 马上又 - 脚本 运行s,它说完成并且没有新的进来。
但是一旦收到 1 封新电子邮件 - 它自己加注星标,合并到该线程中 - 如果我再次单击提取电子邮件 - 我会收到该线程中的每封电子邮件以及新的 - 即使线程中的其他消息未加星标
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("is:starred TannerWebOppCRM");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat])
GmailApp.unstarMessage(messages[j]);
}
threads[i].removeLabel(label);
threads[i].moveToTrash();
}
}
我试图将项目移至垃圾箱 - 但它们没有移动。另外,当我手动将项目移到垃圾箱时 - 它们仍然通过了。
我已经阅读了半天的解决方案,但似乎无法确定只会收到新消息的脚本。
在这种情况下 - 一旦我获取数据 - 电子邮件可以是 purged/archived/unlabeled - 任何东西并且一旦加载 - 我总是有时间向前......意味着如果用户点击 "Get Emails"星期三下午 4 点,我可以从那时起开始搜索电子邮件数据...
getUserLabelByName() 方法检索给定标签名称的标签。它不能用于执行搜索。此外,无论如何您都无需取消线程的星号,因为您正在将它移至垃圾箱。
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var threads = GmailApp.search("is:starred in:TannerWebOppCRM");
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++) {
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat]);
}
threads[i].moveToTrash();
}
}