Я хочу сохранить вложения gmail (файлы .pdf) из определенного электронного письма в определенную папку Google Диска. Мне также нужно переименовать файл с помощью строки, составленной из какой-либо строки письма.
Я разработал простой скрипт, использующий Google Apps Script с некоторыми функциями.
Это основная функция, которую я написал:
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);
}
}
Функция checkIfDefinedType_(attachment)
проверяет, является ли вложение PDF-файлом, а renameFile_(attachment, message_body)
переименовывает вложение, извлекая некоторую строку из электронного письма.
Сценарий, кажется, правильно разработан, но иногда у меня в папке на диске Google сохраняются два или более одинаковых вложений.