从某个Gmail SUBLabel下的所有电子邮件中将PDF导入指定的Google云端硬盘文件夹

时间:2019-05-10 07:49:53

标签: google-apps-script google-api google-drive-api

假设我有一个Gmail标签“主”,而这个标签有一个子标签“发票”。在此子标签下,我收到了带有PDF附件的电子邮件,我想将其导入到特定的“共享Google云端硬盘”文件夹中(我有一个URL)。一旦处理了特定的电子邮件,我希望将其移动到SubLabel“发票(已处理)”中。请查看下面我有atm的代码-不幸的是,它不起作用:(

我对此有一些疑问:

  1. 如何更改代码以使其通过Gmail子标签而不是标签?

  2. 将文件保存在Google云端硬盘中时,如何使代码使用电子邮件的主题行作为文件名?

  3. 是否可以使用共享的Google驱动器?这是公司的Google驱动器,每次我要运行代码时都会提示我查看权限。有可能避免这种情况吗?

谢谢!

function sendToGoogleDrive() { 

  var sheet   = SpreadsheetApp.getActiveSheet();

  var gmailLabels  = GmailApp.getUserLabelByName("Main/Invoices")
  var driveFolder  = "https://drive.google.com/drive/folders/1GL1KIC84FmbA9e3quW_6f8VuO6Cl5"
  var archiveLabel = GmailApp.getUserLabelByName("Main/Invoices(processed)")

  var moveToLabel = getGmailLabel(archiveLabel);  
  var filter = createFilter(gmailLabels, archiveLabel);

  var threads = GmailApp.search(filter, 0, 5);  
  var folder = getFolder(driveFolder);

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

    var message = threads[x].getMessages()[0];    
    var desc   = message.getSubject();
    var att    = message.getAttachments();
    threads[x].addLabel(moveToLabel);

    for (var z=0; z<att.length; z++) {
      try {                
        file = folder.createFile(att[z]);
        file.setDescription(desc);
      }
      catch (e) {
        Logger.log(e.toString());
      }
    }


  }

}

0 个答案:

没有答案