将附件从Gmail保存到Google云端硬盘并为其命名

时间:2014-08-24 00:14:50

标签: google-apps-script

我正在使用Amit Agarwal的精彩script to extract attachments from Google Mail并将其保存到Google云端硬盘。它将附件保存在其名称下,并将邮件的主题行保存在文件的“描述”中(与消息ID一起)。 相反,我想将文件命名为带有附件的电子邮件主题行中的任何内容。

示例:附件名为abc.pdf,主题行为“Invoice-February.pdf”。实际上,脚本会在Google Drive中创建一个名为abc.pdf的文件。相反,我希望它将文件命名为“Invoice-February.pdf”。

这是原始代码:

 for (var x=0; x<threads.length; x++) {

var message = threads[x].getMessages()[0];    
var desc   = message.getSubject() + " #" + message.getId();
var att    = message.getAttachments();

for (var z=0; z<att.length; z++) {
  try {        
    if (check) {
      var name = att[z].getName();
      if (name.indexOf(".") != -1) {
        var extn = name.substr(name.lastIndexOf(".")+1).toLowerCase();
        if (valid.indexOf(extn) != -1) {
          file = folder.createFile(att[z]);
          file.setDescription(desc);
        } else {
          Logger.log("Skipping " + name);
        }
      }
    } else {
      file = folder.createFile(att[z]);
      file.setDescription(desc);
    }  
  }

createFile函数无法为博客添加其他名称,但我没有找到“renameFile”。有谁知道这是怎么做到的吗?

3 个答案:

答案 0 :(得分:1)

我建议你看看https://github.com/ahochsteger/gmail2gdrive

可以选择在Config.gs规则下重命名附件:

// * filenameFrom(字符串,可选):存储在Google云端硬盘中时应重命名的附件文件名 // * filenameTo(String,optional):附件的新文件名的模式。您可以使用'%s'插入电子邮件主题和日期格式模式,例如年份的'yyyy',月的'MM'和日期的'dd'作为文件名中的模式。

答案 1 :(得分:0)

这一行之后:

      file = folder.createFile(att[z]);

添加这些行以重命名创建的文件。

      var extn = file.getName().split('.').pop();
      file.rename(message.getSubject() + z + "." + extn);

我添加了“z”,以便在邮件包含多个附件时具有唯一名称。

答案 2 :(得分:0)

我不知道这个问题是否还在等待答案,但现在你可以这样做:

file = folder.createFile("the name you want", att[z].copyBlob());

参考:https://developers.google.com/apps-script/reference/drive/drive-app#createfilename,-content