【问题标题】:search Gmail for xls attachments在 Gmail 中搜索 xls 附件
【发布时间】:2016-02-20 02:59:23
【问题描述】:

我使用此代码将附件保存到共享的 google 驱动器文件夹,并在通过邮件发生更改时收到通知。只要我搜索pdf附件,一切都很好。当我设置 file:xls 时,返回的消息远远超出预期。不仅调试返回的线程是正确的,并且在 Gmail 中的搜索字段中插入了查询,而且在这种情况下 getmessages() 返回了 38 条消息(和附件!不仅是 xls,还有一个 pdf)查询参数。 Gmail 中禁用了对话视图,与此附件唯一匹配的是 from: 字段。 我试图更改参考数据(通过添加 newer_than),但没有任何改变;我改变了for循环,没有任何改变。我是否错过了一些非常愚蠢的东西,或者这是 xls 的一种错误?

function salvataggioTavoloTecnico(){

var folderName = 'tavoloTecnico';

var p = 0;
var f1s= DriveApp.getFoldersByName(folderName).next().getFiles();
while (f1s.hasNext()) {
   var f1 = f1s.next();
   p++
} Logger.log(p);
var d = new Date();
d.setDate(d.getDate()-1);
var n = d.getFullYear() + "/" + addZero(d.getMonth()+1) + "/" + addZero(d.getDate()); 
var query = 'in:anywhere has:attachment filename:XLS newer_than:5d (from:mariano.casillo@mit.gov.it OR from:donato.castigliego@mit.gov.it OR from:luciano.aloia@mit.gov.it)';
    //var query = 'in:anywhere has:attachment filename:xls '+ 'after:'+n+' (from:mariano.casillo@mit.gov.it OR from:donato.castigliego@mit.gov.it OR from:luciano.aloia@mit.gov.it)';
var elenco = GmailApp.search(query);
var quanteMail = elenco.length; Logger.log(quanteMail);
labelName = GmailApp.createLabel('Movimenti - Tavolo tecnico');   
    for (var i = 0 ; i < quanteMail;  i++) {
    //for ( var i in elenco) {
    elenco[i].addLabel(labelName);
    var thr = elenco[i];
    var nn = thr.getMessageCount();
    Logger.log(nn);
    var mesgs = thr.getMessages();
    var www = mesgs.length;
    for(var j = 0 ; j < www ; j ++){
    var attachments = mesgs[j].getAttachments();
    var rrr = attachments.length;
    for(var k = 0 ; k < rrr ; k ++) {
        var attachment = attachments[k];
        var attachmentBlob = attachment.copyBlob();
        var file = DriveApp.createFile(attachmentBlob);
        DriveApp.getFoldersByName(folderName).next().addFile(file);
      }

}
}
var c = 0;
var f2s = DriveApp.getFoldersByName(folderName).next().getFiles();
while (f2s.hasNext()) {
   var f2 = f2s.next();
   c++
 }

if ( c > p) { GmailApp.sendEmail("me@me.com", " avviso "+folderName, "Un nuovo file è stato aggiunto")};

}

【问题讨论】:

    标签: javascript gmail


    【解决方案1】:

    我仍然不知道为什么按代码搜索会从参数中返回更多消息,但是我通过在“错误”消息中搜索仅通过解析日期需要的消息来解决它,就像这样,现在它可以工作了:

    ......

    var threads = GmailApp.search(query);
            for ( var i in threads) {
           threads[i].addLabel(labelName);
            var mesgs = threads[i].getMessages();
            var www = mesgs.length;
            for(var j = 0 ; j < www ; j ++){
             if ( mesgs[j].getDate() < d ){} else {
            var attachments = mesgs[j].getAttachments();
            var rrr = attachments.length;
    
           for(var k = 0 ; k < rrr ; k ++) {
            var attachment = attachments[k];
            var attachmentBlob = attachment.copyBlob();
            var file = DriveApp.createFile(attachmentBlob);
            DriveApp.getFoldersByName(folderName).next().addFile(file);
          }
        }
        }
    }
    

    .......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2020-08-24
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 2022-12-28
      • 1970-01-01
      相关资源
      最近更新 更多