Скрипт Google Apps работает медленно - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть самодельный скрипт для сохранения вложений на диск из Gmail. Я перебираю вложения и регистрирую время сохранения каждого вложения. Я заметил некоторые странные расхождения между некоторыми сохранениями. Как показано на следующем рисунке. Иногда между петлями есть полторы минуты. Каждый файл представляет собой PDF-файл, и все они примерно одинакового размера, например, 100 кб. каждый. Не удивительно, что этот скрипт обрабатывает 50 вложений из одного письма.

enter image description here

Мой цикл 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]);}

Что-то не так с моим кодом?

1 Ответ

0 голосов
/ 12 ноября 2018

Хорошо получается, сохранение файла в корне, затем копирование его в другой каталог, а затем удаление исходного файла занимает больше времени, чем просто поместить его в правильный каталог для начала.

Я изменил это:

               var file = DriveApp.createFile(attachmentBlob);
            if (parentFolder.addFile(file)) {
                root.removeFile(file);

            }

на это:

var file = parentFolder.createFile(attachmentBlob);

Хотя я почти уверен, что этот метод не всегда был возможен.Возможно я ошибаюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...