Google Apps脚本可计算昨天收到的电子邮件数量,具有特定标签,然后将#caily每日保存到电子表格中

时间:2016-10-16 10:27:08

标签: google-apps-script google-sheets gmail

基本上标题是什么,但我想:

1)自动计算收到我的Gmail帐户的电子邮件数量,该帐户上有一定的标签

2)每天计数一次,即使为零

3)每天向Google Spreasheet报告

4)所以我可以像这样制作月度报告:

日期/#
日期/#
日期/#



十月份的总数/#
平均每天/#

我确信这对于脚本大师使用谷歌脚本是件小事,但我不知道。请教我!

2 个答案:

答案 0 :(得分:2)

打开一个新的无标题电子表格,然后转到工具 - >打开脚本编辑器并粘贴下面给出的代码。

function CountEmail() 
{
var label = GmailApp.getUserLabelByName("LabelName");
var labelname = label.getName();
var mails = label.getThreads();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var date = new Date();
sheet.appendRow([labelname,date,mails.length]);
}

要每天运行脚本,您需要在应用程序脚本中设置项目触发器。为此,请按照以下步骤操作:

资源 - >当前项目的触发器 - >添加触发器 - >时间驱动 - >小时计时器 - >选择您希望脚本运行的时间。

只需使用Sum()函数,即可在电子表格中计算电子邮件总数和平均电子邮件数。

答案 1 :(得分:1)

引用Suyash Gandhi发布的代码(在此处引用它以防它被删除,因此没有混淆)。

NOTE: not my code!!! Credit to Suyash Gandhi
function CountEmail() 
{
  var label = GmailApp.getUserLabelByName("LabelName");
  var labelname = label.getName();
  var mails = label.getThreads();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var date = new Date();
  sheet.appendRow([labelname,date,mails.length]);
}
NOTE: not my code!!! Credit to Suyash Gandhi

见下图

enter image description here

你在这里看到的是2个主题,最底层的1封电子邮件,顶部的3封电子邮件和顶部的1封电子邮件。给定的代码将返回2。如果您希望统计所有4个(如果您想要草稿,则需要5个),则需要使用Gmail API(请参阅参考here)。

我有一个脚本可以获取特定时间段内的所有电子邮件(每封邮件),并将接收日期,发件人,收件人和标题输出到电子表格。这是实际提取电子邮件的代码。其余的代码主要是创建文件,生成查询字符串并重置脚本,如果它运行得太接近6分钟。

queriedMessages =
      Gmail.Users.Messages.list(userInfo.mail,
                                {
                                  'q': queryString,
                                  'pageToken': execProperties.nextPageId
                                });
  • userInfo.mail是您从中获取电子邮件的电子邮件地址。这只是这样编写的,因为脚本可以使用任何帐户运行
  • queryString是一个用于搜索电子邮件的字符串,与您在gmail搜索框中使用的字符串完全相同。所以你会label:labelname
  • pageToken是搜索页面的代码(基本上当你点击gmail中的下一页按钮时需要的代码)。它作为此函数的一部分返回,因此您可以从queriedMessages.nextPageToken访问它。因此,如果您获得超过1页,那么您将需要它来访问其余的消息。

另外,请记住,您正在获取适合查询的所有消息,因此,如果您每天执行此操作,则可能需要包含触发器。另外,请记住,从触发器触发的函数会忽略您的时区(已知错误),但您可以相当容易地找出如何创建仅运行1天的查询。就个人而言,我只是在开始和结束时抓住+1天,然后将这些消息过滤掉。