使用时间戳过滤Gmail

尸体

是Google脚本新涉足的领域;想问一下我的方向是否正确,以及如何在脚本中操纵时间。

我正在努力在Google App脚本中处理时间值,基本上可以提取发送的每封电子邮件的时间戳,但是我只想将最近的电子邮件信息粘贴到电子表格中,例如,距脚本运行时间30分钟以内。这是为了避免提取重复的信息。

不知道这里是否有currentTime()函数,否则我必须创建一个新的Date()对象并从那里进行一些计算。尝试了一些变化,但似乎没有任何正常工作。

感谢您在朝着正确的方向迈出的任何帮助,谢谢!

function getDetails(){
  var DEST_URL = "SHEET_URL"; //redacted for sensitivity
  var DEST_SHEETNAME = "Test";
  
  var destss = SpreadsheetApp.openByUrl(DEST_URL);
  var destSheet = destss.getSheetByName(DEST_SHEETNAME);
  
  var threads = GmailApp.search("FILTERS"); //filter settings redacted for sensitivity

  for(var i = 0; i < threads.length; i++){
    var messages=threads[i].getMessages();  
    for(var j =0; j < 1; j++){ //only take first message in thread
      var message = messages[j];
      var subject = message.getSubject() ;
      var sentTimeStamp = message.getDate();

      if(sentTimeStamp is within last 30minutes as of script run time){ //this is where i need help
          var delimitString = subject.split("is sent");
          var detailName = delimitString[0];

          var lastRow = destSheet.getLastRow();
          destSheet.getRange(lastRow + 1,1).setValue(detailName);
          destSheet.getRange(lastRow + 1,2),setValue(sentTimeStamp);
      }
    }
  }
}
马里奥斯

另一个想法是查询您最近30分钟收到的电子邮件。

说明:

您可以在GmailApp.search函数中查询最近30分钟前收到的电子邮件请参阅此链接以查看可以使用哪些过滤器。

这将获取您最近30分钟收到的带有关键字“ FILTERS”的最新电子邮件。

var ThirtyMinutesAgo = new Date(); 
ThirtyMinutesAgo.setMinutes(ThirtyMinutesAgo.getMinutes() - 30);
const queryString = `"FILTERS" newer:${Math.round(ThirtyMinutesAgo.getTime()/1000)}`
const threads = GmailApp.search(queryString); // threads the last 30 minutes

这种方法效率更高,原因有二:

  1. 您需要循环访问的数据(线程)较少for

  2. 您不需要if在每个线程上都应用和声明。

解:

function getDetails(){
  var DEST_URL = "SHEET_URL"; //redacted for sensitivity
  var DEST_SHEETNAME = "Test";
  
  var destss = SpreadsheetApp.openByUrl(DEST_URL);
  var destSheet = destss.getSheetByName(DEST_SHEETNAME);
  
//  var threads = GmailApp.search("FILTERS"); //filter settings redacted for sensitivity
  
  // new code
  var ThirtyMinutesAgo = new Date(); 
  ThirtyMinutesAgo.setMinutes(ThirtyMinutesAgo.getMinutes() - 30);
  const queryString = `"FILTERS" newer:${Math.round(ThirtyMinutesAgo.getTime()/1000)}`
  const threads = GmailApp.search(queryString); // threads the last 30 minutes
  //

  for(var i = 0; i < threads.length; i++){
    var messages=threads[i].getMessages();  
    for(var j =0; j < 1; j++){ //only take first message in thread
      var message = messages[j];
      var subject = message.getSubject() ;
      var sentTimeStamp = message.getDate();

          var delimitString = subject.split("is sent");
          var detailName = delimitString[0];

          var lastRow = destSheet.getLastRow();
          destSheet.getRange(lastRow + 1,1).setValue(detailName);
          destSheet.getRange(lastRow + 1,2),setValue(sentTimeStamp);
      }
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Excel中使用时间戳

来自分类Dev

在PHP中使用时间戳

来自分类Dev

使用时间戳作为过滤器来学习更衣室queryStatement

来自分类Dev

使用时间戳和日期时间的TSQL排名

来自分类Dev

使用时间戳计算员工的工作时间

来自分类Dev

如何使用时间戳从mysql中选择数据

来自分类Dev

如何使用时间戳构造函数

来自分类Dev

如何在Ping中使用时间戳选项

来自分类Dev

PostGIS使用时间戳检测交叉

来自分类Dev

MYSQL查询使用时间戳调用最新值

来自分类Dev

在CQL中使用时间戳作为列名

来自分类Dev

如何在规格rpm中使用时间戳?

来自分类Dev

如何在Ping中使用时间戳选项

来自分类Dev

GQL查询(python)使用时间戳检索数据

来自分类Dev

Python(if,elif,else)使用时间戳

来自分类Dev

Django使用时间戳增量查询对象

来自分类Dev

在MySQL中使用时间戳触发

来自分类Dev

在VLC上使用时间戳录制视频

来自分类Dev

在ng-repeat中使用时间戳分组

来自分类Dev

Postgres:使用时间戳进行分页

来自分类Dev

使用时间戳和 Moment.js

来自分类Dev

如何使用时间戳作为图表的 x 轴?

来自分类Dev

在 Spring 配置中使用时间戳

来自分类Dev

使用时间戳间隔加入 SQL

来自分类Dev

如何使用时间戳类型数据制作程序

来自分类Dev

使用时间戳服务器,代码签名时间戳仍然过期

来自分类Dev

使用时间位置将日期时间与UTC时间戳之间进行转换

来自分类Dev

PostgreSQL:如何使用时间戳仅将时间和日期插入变量?

来自分类Dev

如何在Rust Diesel中使用时间戳和时间间隔进行算术运算