【问题标题】:How do I use GmailApp.search with variables?如何将 GmailApp.search 与变量一起使用?
【发布时间】:2019-05-08 19:41:23
【问题描述】:

我正在尝试创建一个脚本来计算每天带有特定标签的电子邮件数量。我目前设置了以下代码;

function CountVoicemail()  
{
var Label = GmailApp.getUserLabelByName("X140");
var LabelName = Label.getName();
var date = new Date();
var NextDate = date+1; 
var Mails = GmailApp.search('label:"+LabelName+" after:"+date+" 
before:"+NextDate+"',0, 500);              
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data 
Sheet");
sheet.appendRow([LabelName, date,Mails.length]);
}

现在我有代码将其结果作为新行写入工作表,第一列是标签名称,第二列是日期,第三列是特定标签中的电子邮件数量代码正在运行的日期(将有一个每日触发)。然而,现在代码只是返回一个零值来表示电子邮件的数量(# 不是零)。我认为这是由于我如何尝试计算电子邮件(使用 GmailApp.Search 调用的变量“邮件”)以及我在搜索调用中使用变量。我能做些什么来完成这项工作?还是有其他原因导致此问题?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我不确定,但也许你的意思是这样的?

    function CountVoicemail() {
      var Label = GmailApp.getUserLabelByName("X140");
      var name = Label.getName();
      var start=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate());
      var end=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1);
      var Mails = GmailApp.search(Utilities.formatString('label:%s after:%s before: %s',name,start,end));
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Sheet");
      sheet.appendRow([LabelName, date,Mails.length]);
    }
    

    以下是重新格式化日期的更改:

    function CountVoicemail() {
      var Label = GmailApp.getUserLabelByName("X140");
      var name = Label.getName();
      var start=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate());
      var end=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate()+1);
      var Mails = GmailApp.search(Utilities.formatString('label:%s after:%s before: %s',name,Utilities.formatDate(start, Session.getScriptTimeZone(), "yyyy/MM/dd"),Utilities.formatDate(end, Session.getScriptTimeZone(), "yyyy/MM/dd")));
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data Sheet");
      sheet.appendRow([LabelName, date,Mails.length]);
    }
    

    【讨论】:

    • 是的,这基本上就是我要找的。谢谢!还有一个快速的问题,有没有一种方法可以将“开始”和“结束”重新格式化为“YYYY/MM/DD”的格式,我刚刚意识到搜索调用要求日期采用这种格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2021-01-09
    • 2016-03-03
    • 2017-09-10
    相关资源
    最近更新 更多