是否有任何Google API可以将Gmail邮件附件保存到Google驱动器? [英] Is there any google API which could save gmail message attachments to google drive?

查看:73
本文介绍了是否有任何Google API可以将Gmail邮件附件保存到Google驱动器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将Gmail邮件附件保存到Google驱动器.有没有这样的Google API?

How can I save gmail message attachments to google drive. Is there any such google API?

推荐答案

要添加详细信息,请参见应用程序的代码段脚本:

To add details, here is the main page of what Google APIs you can use. As Gaurav mentioned, you can use Drive and Gmail API. Here is a snippet using Apps Script:

// GLOBALS
//Array of file extension which you would like to extract to Drive
var fileTypesToExtract = ['jpg', 'tif', 'png', 'gif', 'bmp', 'svg'];
//Name of the folder in google drive i which files will be put
var folderName = 'GmailToDrive';
//Name of the label which will be applied after processing the mail message
var labelName = 'GmailToDrive';



function GmailToDrive(){
  //build query to search emails
  var query = '';
  //filename:jpg OR filename:tif OR filename:gif OR fileName:png OR filename:bmp OR filename:svg'; //'after:'+formattedDate+
  for(var i in fileTypesToExtract){
 query += (query == '' ?('filename:'+fileTypesToExtract[i]) : (' OR filename:'+fileTypesToExtract[i]));
  }
  query = 'in:inbox has:nouserlabels ' + query;
  var threads = GmailApp.search(query);
  var label = getGmailLabel_(labelName);
  var parentFolder;
  if(threads.length > 0){
 parentFolder = getFolder_(folderName);
  }
  for(var i in threads){
 var mesgs = threads[i].getMessages();
 for(var j in mesgs){
   //get attachments
   var attachments = mesgs[j].getAttachments();
   for(var k in attachments){
     var attachment = attachments[k];
     var isImageType = checkIfImage_(attachment);
     if(!isImageType) continue;
     var attachmentBlob = attachment.copyBlob();
     var file = DocsList.createFile(attachmentBlob);
     file.addToFolder(parentFolder);
   }
 }
 threads[i].addLabel(label);
  }
}

//This function will get the parent folder in Google drive
function getFolder_(folderName){
  var folder;
  try {folder = DocsList.getFolder(folderName)}
  catch(e){ folder = DocsList.createFolder(folderName);}
  return folder;
}

//getDate n days back
// n must be integer
function getDateNDaysBack_(n){
  n = parseInt(n);
  var today = new Date();
  var dateNDaysBack = new Date(today.valueOf() - n*24*60*60*1000);
  return dateNDaysBack;
}

function getGmailLabel_(name){
  var label = GmailApp.getUserLabelByName(name);
  if(label == null){
 label = GmailApp.createLabel(name);
  }
  return label;
}

//this function will check for filextension type.
// and return boolean
function checkIfImage_(attachment){
  var fileName = attachment.getName();
  var temp = fileName.split('.');
  var fileExtension = temp[temp.length-1].toLowerCase();
  if(fileTypesToExtract.indexOf(fileExtension) != -1) return true;
  else return false;
}

希望这会有所帮助.

这篇关于是否有任何Google API可以将Gmail邮件附件保存到Google驱动器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆