当前位置: 首页 > 知识库问答 >
问题:

使用应用程序脚本将Gmail附件复制到Google Drive

孟光耀
2023-03-14

我正在使用谷歌应用程序脚本自动将附件从电子邮件保存到唯一的谷歌驱动器文件夹,具体取决于邮件过滤到的标签。

到目前为止,我已经设法使用我在网上找到的一些代码片段获得了消息ID。然而,我被困在试图访问消息的正文

function getMessage(){
     var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
     var userId = "myemail@gmail.com";
     var query = "label:Global Alcohol";
     var res = Gmail.Users.Messages.list(userId, {q: query});
     var attachment = msgs.Attachments.get(userId, messageId, id);
     var ids = res.messages.map(function(e){return e.id});
     Logger.log(ids);// Message IDs with the specific labels.
     }

提前感谢你的帮助。

共有2个答案

汪驰
2023-03-14
var query = 'label:global-alcohol'; 
var folder = 'Global Alcohol';
var results = Gmail.Users.Messages.list(userId, {q: query});
results.messages.forEach(function (m) {
    var msg = GmailApp.getMessageById(m.id);
    msg.getAttachments().forEach(function (a) {
        var fileName = a.getName();
        fileName = saveAttachmentToFolder(folder, a, fileName, msg.getDate(), input.tz);
    });
});
function saveAttachmentToFolder(folder, attachment, fileName, date, timezone) {
    if (timezone) {
        fileName = standardizeName(attachment, date, timezone);
    }
    Logger.log(fileName);
    folder.createFile(attachment.copyBlob()).setName(fileName);
    return fileName;
}

上面的代码片段基于我创建的Gmail附加组件,专门用于将附件保存到Drive:https://github.com/ellaqezi/archiveByLabel/blob/main/Code.gs#L24中的标记文件夹

标签字段中,可以定义要在驱动器中创建的嵌套目录,例如foo/bar。

query字段中,您可以复制参数,就像在Gmail的搜索栏中使用它们一样。

微生慈
2023-03-14

试试这个:

function saveAttachmentInFolder(){
  var folder = DriveApp.getFolderById('xxxxxxxxxxxxx');
  var userId = "myemail@gmail.com";
  var query = "label:Global Alcohol";
  var res = Gmail.Users.Messages.list(userId, {q: query});//I assumed that this works
  res.messages.forEach(function(m){
    var attA=GmailApp.getMessageById(m.id).getAttachments();
    attA.forEach(function(a){
      var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(), "yyMMddHHmmss");
      folder.createFile(a.copyBlob()).setName(a.getName()+ts);
    });
  });
}
 类似资料:
  • 我使用一个简单的脚本来删除1天后所有标有“摄像头”的电子邮件。这已经奏效好几个月了。我没有改变它,但它突然停止工作。 该脚本仍有在我的Gmail上运行的权限,但已停止。 感谢任何建议。 脚本是; 谢了山姆

  • 使用谷歌应用脚本Gmail库,当我使用函数,API似乎将过去的一个段落拆分为多个段落,可能会使用字符限制。例如,我的电子邮件中有一段写道: 但当我在电子邮件中调用此功能时,它变成: 而且,当我在一个新的行定界符上拆分电子邮件文本,并进行一些清理,以使用我的输出创建一个数组时,我最终得到: 我查看了这篇Reddit帖子,它似乎处理了类似的问题。但是,我尝试了提出问题的人提出的解决方案: 但它并没有满

  • 我正在开发一个GoogleApps脚本电子表格应用程序,我希望该程序具备的能力之一是根据来自两个不同列的数据自动排序一系列表单响应。所以我想按第16列中的数据排序,然后按第1列排序。我可以使用以下方法手动实现此功能:https://drive.googleblog.com/2010/06/tips-tricks-advanced-sorting-rules-in.html 目前我正在运行函数与第一

  • 我正在尝试使用将应用程序容器中的文件夹复制到本地Windows文件夹。该设备运行的是Android5.1.1,没有根。 以下方法不起作用: 方法1 错误:找不到设备 cp:/data/data/droidsample.droidsample/files/metrolog/metrologs是一个目录(未复制)。 这也是行不通的。 方法5 cp:/data/data/droidsample.droi

  • 我想为某些参数设置一个gmail自带的过滤器。 基本上,我经常使用谷歌别名功能(电子邮件后的符号)。我想自动化创建一个过滤器的过程,该过滤器读取“to”行,然后查找一个“”。如果找到a“”,它将为“”后面的内容制作一个标签。然后,它将创建一个专用/本机过滤器,该过滤器将:跳过收件箱并应用“”后面的标签。 我已经浏览了gmail脚本,但还没有找到制作原生过滤器的方法。我知道这个功能可能刚刚实现。 任

  • 问题内容: 您可以使用Eclipse附加到正在运行的应用程序,类似于使用Visual Studio附加方式吗? 问题答案: 是。 如果在打开调试端口的情况下启动服务器,请将其添加到java命令中: 并且您的项目中有源代码(从技术上讲这不是必需的,但是除非您这样做,否则它是无用的),您可以通过使用host =服务器所在的机器设置“调试配置”来连接到正在运行的服务器在端口= 8888上运行(例如-参见