[英]Google apps script running slow
我有一個自制腳本,用於將附件從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]);}
我的代碼有問題嗎?
事實證明,將文件保存到根目錄,然后將其復制到另一個目錄,然后刪除原始文件所花的時間比將其放在正確的目錄中所需的時間更長。
我改變了這個:
var file = DriveApp.createFile(attachmentBlob);
if (parentFolder.addFile(file)) {
root.removeFile(file);
}
對此:
var file = parentFolder.createFile(attachmentBlob);
盡管我很確定這種方法並非總是可行。 也許我誤會了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.