微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在谷歌表格中计算gmail中的电子邮件

如何解决在谷歌表格中计算gmail中的电子邮件

也许这是一个基本问题,但我可以找到答案。如何使用特定标签对收到的信件进行自动计数。也就是说,我想发布一个触发器,以便每天早上 01-02 点,都会计算昨天的字母。所以它每天都会填满。示例文件

https://docs.google.com/spreadsheets/d/1jqtHVwab5qqhGgfpFt4J5uQraZU0BIzD2B6mNT9mX0w/edit

解决方法

这对我有用:

function countemailwithalabel() {
   const ts = GmailApp.search('label: qs-services-ups');
   let msgs = 0;
   ts.forEach(t => msgs+=t.getMessageCount());
   Logger.log(msgs);//6
}
,

您可以使用此示例代码(只需替换 label):

function countEmailyesterday(){

  const secondsSinceEpoch = (date) => Math.floor(date.getTime() / 1000);
  const after = new Date();
  const before = new Date();


  //Subtract 1 day 
  after.setDate(after.getDate()-1);
  before.setDate(before.getDate()-1);

  //Get -1 day  date string
  var timezone = Session.getScriptTimeZone();
  var todayStr = Utilities.formatDate(after,timezone,"dd.MM.yyyy");
  Logger.log(todayStr);

  //Set time to 00:00 and 23:59
  after.setHours(00,00,0);
  before.setHours(23,59,0);
  
  //Label
  const label = "Гимнастика Диана";
  const query = `label:${label} after:${secondsSinceEpoch(after)} before:${secondsSinceEpoch(before)}`;
  Logger.log(query);

  var threads = GmailApp.search(query);
  var count = threads.length;
  Logger.log(count);

  //Find the matching date's row and write the email count in column B
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Monitor');
  var dateValues = sheet.getRange('A1:A').getDisplayValues().flat();
  Logger.log(dateValues);
  //find matched index
  var index = dateValues.indexOf(todayStr);
  if(index!=-1){
    Logger.log(index);
    sheet.getRange(index+1,2).setValue(count);
  }
}

它有什么作用?

  1. 根据今天的日期创建一个 beforeafter 日期对象。
  2. 以这种格式创建今天的日期字符串 dd-MM-yyyy
  3. 从每个日期对象中减去 1 天。然后将 before 的时间设置为 23:59:00 而将 after 的时间设置为 00:00:00
  4. 使用 Gmail search operators label:(your label) after:(Epoch datetime) before:(Epoch datetime)
  5. 创建 Gmail 查询字符串
  6. 使用 GmailApp.search(query) 将返回一个 GmailThread 数组
  7. 获取数组的长度。
  8. 使用 Range.getDisplayValues() 以字符串形式获取 A 列中的日期值。使用 array.flat() 将日期值更改为一维数组
  9. 使用array.indexOf()查找今天匹配日期的数组索引
  10. 使用数组索引(添加 +1 偏移量,因为数组是从零开始的)作为 Sheet.getRange(row,col) 中的行索引,并根据电子邮件计数设置 B 列值。

输出:

enter image description here

其他参考:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。