我正在使用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”。有谁知道这是怎么做到的吗?
答案 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