我有一个自制脚本,用于将附件从Gmail保存到云端硬盘。我正在遍历附件并记录每个附件保存的时间。我注意到某些保存之间存在一些奇怪的差异。如下图所示。有时循环之间需要一分半钟。每个文件都是pdf文件,它们的大小都大致相同,例如100 kb。每。该脚本处理一封电子邮件中的50个附件并不罕见。
我的for循环如下:
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);
if (parentFolder.addFile(file)) {
root.removeFile(file);
writeToSheet(file, message, msgId, k, totalattachments)
}
}
以下是相关功能。
function checkIfDefinedType_(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;}
function writeToSheet(file, message, msgId, k, totalattachments) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var fileId = file.getId();
var fileUrl = file.getUrl();
var formattedDate = Utilities.formatDate(new Date(), "GMT", "dd-MM-yyyy HH:mm:ss");
var emailSubject = message.getSubject();
var emailFrom = message.getFrom();
var sheet = ss.getSheetByName('Log');
sheet.appendRow([msgId, formattedDate, emailFrom, emailSubject, k, totalattachments, file, fileId, fileUrl]);}
我的代码有问题吗?
答案 0 :(得分:0)
事实证明,将文件保存到根目录,然后将其复制到另一个目录,然后删除原始文件所花的时间比将其放在正确的目录中所需的时间更长。
我更改了此内容:
var file = DriveApp.createFile(attachmentBlob);
if (parentFolder.addFile(file)) {
root.removeFile(file);
}
对此:
var file = parentFolder.createFile(attachmentBlob);
尽管我很确定这种方法并非总是可行。也许我误会了。