Захватите URL для файла XLSX в GDrive, используя Google Script - PullRequest
0 голосов
/ 23 января 2020

Справочная информация: У меня есть файл xlsx, который отправляется мне по электронной почте на еженедельной основе. Этот файл сохраняется на моем диске, поскольку он прибывает с помощью триггера.

Запрос: Теперь я хотел бы скопировать данные из этого файла в панель инструментов Google листы. Для начала я хотел бы знать, есть ли способ программно получить URL-адрес этого файла в скрипте Google. Ручное действие - дважды щелкнуть файл на диске, затем нажать «Открыть с помощью Google Sheets» и скопировать URL-адрес. Очевидно, я не хочу делать это вручную каждую неделю. Может ли скрипт Google сделать это?

1 Ответ

1 голос
/ 23 января 2020

Это помогает? Я прокомментировал, чтобы помочь объяснить, что он делает.

Вам необходимо включить Drive API в разделе Ресурсы> Расширенные службы Google.

Это сохранит вложение на диск и преобразует его. в Google Sheets. В этот момент вы можете открыть преобразованный файл Google Sheets и извлечь данные для сохранения в другие данные Google Sheets.

function doIt()
{
    // get where we want to save the file
    var destinationFolder = DriveApp.getFolderById("...");

    // search for the email with the attachment you want to save
    var emailThreads = GmailApp.search("...");

    // go through each thread
    for(var i = 0, numThreads = emailThreads.length; i < numThreads; ++i)
    {
        // get all of the emails in the thread
        var emailMessages = emailThreads[i].getMessages();

        // get all of the messages
        for(var j = 0, numMessages = emailMessages.length; j < numMessages; ++j)
        {
            // get the message
            var emailMessage = emailMessages[j];

            // we only want messages that are not in the trash
            if(emailMessage.isInTrash()) continue;

            // get all of the attachments
            var emailAttachments = emailMessage.getAttachments({includeInlineImages: false, includeAttachments: true});

            // go through all attachments
            for(var k = 0, numAttachments = emailAttachments.length; k < numAttachments; ++k)
            {
                // get the attachment
                var emailAttachment = emailAttachments[k];

                // save the attachment to the destination folder
                var savedFile = destinationFolder.createFile(emailAttachment);

                // log the URL of the saved file
                Logger.log(savedFile.getUrl());

                // create a copy of the file as a Google Sheets file
                var sheetsFile = Drive.Files.insert({
                    "title": "...",
                    "parents": [{"id": destinationFolder.getId()}]
                }, savedFile.getBlob(), {
                    "convert": true,
                    "supportsAllDrives": true,
                    "supportsTeamDrives": true
                });

                // log the URL and file ID of the converted file
                Logger.log(sheetsFile.selfLink);
                Logger.log(sheetsFile.id);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...