Javascript 分别从每个电子邮件id将附件保存到google drive文件夹

Javascript 分别从每个电子邮件id将附件保存到google drive文件夹,javascript,google-apps-script,Javascript,Google Apps Script,我正在尝试创建一个脚本,可以将电子邮件id不时发送的所有附件保存到特定的驱动器文件夹中 我是新的气体和发现这个脚本,但它似乎不符合我的要求。有人能帮忙吗 function GmailToDrive() { var query = ''; query = 'in:inbox from:noreply@agyo.io has:nouserlabels '; var threads = GmailApp.search(query); var label = getGmailLabel_(l

我正在尝试创建一个脚本,可以将电子邮件id不时发送的所有附件保存到特定的驱动器文件夹中

我是新的气体和发现这个脚本,但它似乎不符合我的要求。有人能帮忙吗

      function GmailToDrive() {
var query = '';
query = 'in:inbox from:noreply@agyo.io has:nouserlabels ';
var threads = GmailApp.search(query);
var label = getGmailLabel_(labelName);
var parentFolder;
if (threads.length > 0) {
    parentFolder = getFolder_(folderName);
}
var root = DriveApp.getRootFolder();
for (var i in threads) {
    var mesgs = threads[i].getMessages();
    for (var j in mesgs) {
        //get attachments
        var attachments = mesgs[j].getAttachments();
        var message_body = mesgs[j].getBody();
        for (var k in attachments) {
            var attachment = attachments[k];
            var isDefinedType = checkIfDefinedType_(attachment);
            if (!isDefinedType) continue;
            var attachmentBlob = attachment.copyBlob();
            var file = DriveApp.createFile(attachmentBlob);
            file.setName(renameFile_(attachment, message_body))
            parentFolder.addFile(file);
            root.removeFile(file);
        }
    }
    threads[i].addLabel(label);
}
}

我无法理解getFolder_u2;(folderName)和checkIfDefinedType_2;(附件)的用法

我只需要这个: 当新电子邮件向我发送附件时,创建一个新文件夹并将其保存到该文件夹…

问题: 您提供的代码使用了几个未定义的函数(
getgmailabel
getFolder
checkIfDefinedType
renameFile
)。它们的定义应该在您第一次发现此脚本的地方

目标和解决办法: 在任何情况下,根据您提到的目标,实际上不需要这些未定义的函数:

将电子邮件id不时发送的所有附件保存到特定的驱动器文件夹

  • 无需获取标签(
    getgmailabel
    ),因为您只想从特定日期之间的邮件中检索附件,而不想向任何邮件添加任何标签
  • 如果要检索特定日期之间的线程,应使用搜索运算符
    before:
    after:
    (请参阅)
  • 您可以通过执行以下操作来检索所需文件夹(如果您不知道如何获取特定文件夹的文件夹
    id
    ,则此
    id
    是文件夹URL的一部分,如图所示。如果您想查找名称,只需使用和循环查找所需文件夹即可
  • 没有理由使用
    getRootFolder
    ,因为您可以通过将文件直接创建到所需的文件夹中
  • 不确定为什么要使用
    checkIfDefinedType\
    ,但这不是在驱动器中创建相应文件所必需的
  • 默认情况下,创建的文件将与附件具有相同的名称,但在任何情况下,您都可以使用
    file.setName(attachment.getName()+“任何要添加的自定义字符串”);
    对其进行自定义
代码段:
我的猜测是,
checkIfDefinedType_uu和getFolder_uu
是原始作者定义的唯一函数。您需要返回并获取它们或自己重写它们。您好!对您有用吗?请参阅。
function GmailToDrive() {
  const query = 'from:noreply@agyo.io before:2021-05-04 after:2021-05-01'; // Set sender and dates you prefer
  const threads = GmailApp.search(query);
  const folder = DriveApp.getFolderById("YOUR_FOLDER_ID");
  threads.forEach(thread => {
    const mesgs = thread.getMessages();
    mesgs.forEach(message => {
      const attachments = message.getAttachments();
      attachments.forEach(attachment => {
        const attachmentBlob = attachment.copyBlob();
        const file = folder.createFile(attachmentBlob);
        file.setName(attachment.getName() + " CREATED IN DRIVE");
      });
    });
  });
}