Ing*_*org 2 google-apps-script
我正在尝试解压缩作为附件发送到我的电子邮件的 DMARC 报告。它适用于 zip 文件,但不适用于 gz 文件。
\n在我的代码中,我首先按主题获取正确的电子邮件。如果主题正确,则运行此脚本:
\nvar attachments = message.getAttachments();\n for(var k in attachments){\n var attachment = attachments[k];\n var attachmentBlob = attachment.copyBlob();\n var vedleggsnavn = attachment.getName();\n Logger.log(vedleggsnavn)\n var vedleggstype = attachment.getContentType();\n Logger.log(vedleggstype)\n if(vedleggstype==\'application/gzip\'){\n Logger.log("ja gzip");\n var files = Utilities.ungzip(attachmentBlob);\n }\n if(vedleggstype==\'application/zip\'){\n Logger.log("ja zip");\n var files = Utilities.unzip(attachmentBlob);\n }\n
Run Code Online (Sandbox Code Playgroud)\n如果附件类型是应用程序/zip,则会解压缩并保存在我的 Google 云端硬盘中。如果它是应用程序/gzip,我会收到错误。这是我的日志:
\n我希望有人可以帮助我弄清楚如何解压缩 gz 文件,我没有找到任何有关使用 ungzip 的教程。(我找到了一个他们写gunzip的地方,但看起来不太对。)
\n我发现了这个:在 Apps 脚本中取消 gzipping Blob 时出现“无效参数”错误\n但我不明白它。
\n有人告诉我我的代码不够。我认为既然它适用于 zip,那么只发布问题发生的代码就足够了,以使其保持最小。但现在我将发布我的完整功能:
\nfunction lagreVedlegg(){\n var folderID= \'\'; //I deleted my ID\n var tittelen = "Report Domain: dotl.no";\n var tittelen2 = "Report domain: dotl.no";\n var tittelLengde = tittelen.length;\n\n var eldreEnn = new Date(2021,4,21); //huska at telling starter p\xc3\xa5 0, s\xc3\xa5 m\xc3\xa5ned 4 er mai\n\n var root = DriveApp.getRootFolder();\n var parentFolder = DriveApp.getFolderById(folderID);\n var antall = 20;\n\n var threads = GmailApp.getInboxThreads(0, antall);\n //Logger.log(threads)\n for(var i in threads){\n var thread = threads[i];\n var message = thread.getMessages()[0]; // Get first message\n //Logger.log(message)\n var tittel = message.getSubject();\n var tittelKort = tittel.substring(0,tittelLengde);\n Logger.log(tittelKort)\n var avsender = message.getFrom(); \n //Logger.log(avsender)\n var dato = message.getDate(); \n //Logger.log(dato)\n //Logger.log(eldreEnn)\n\n if((tittelKort==tittelen || tittelKort==tittelen2) && dato > eldreEnn){\n Logger.log(avsender); // Log from address of the message\n var attachments = message.getAttachments();\n for(var k in attachments){\n var attachment = attachments[k];\n var attachmentBlob = attachment.copyBlob();\n var vedleggsnavn = attachment.getName();\n Logger.log(vedleggsnavn)\n var vedleggstype = attachment.getContentType();\n Logger.log(vedleggstype)\n if(vedleggstype==\'application/gzip\'){\n Logger.log("ja gzip");\n attachment.setContentType(\'application/x-gzip\');\n var attachmentBlob = attachment.copyBlob();\n var files = Utilities.ungzip(attachmentBlob);\n }\n if(vedleggstype==\'application/zip\'){\n Logger.log("ja zip");\n var files = Utilities.unzip(attachmentBlob);\n }\n Logger.log(files)\n files.forEach(function(file) {\n Logger.log(file)\n //Logger.log(parentFolder)\n parentFolder.createFile(file);\n })\n }\n thread.moveToArchive();\n Logger.log(tittel + "flyttet")\n }\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
这似乎是一个错误。Utilities.unzip
似乎仅适用于 MIME 类型的文件application/x-gzip
,并且不支持现代application/gzip
. 他们的问题跟踪器上已经有一个错误报告。单击白色星号 (\xe2\x98\x86) 以赋予其更高的优先级。
作为解决方法,您可以将内容类型设置为application/x-gzip
:
function ungzipAttahcment() {\n const message = GmailApp.getMessageById(\'...\')\n const attachment = message.getAttachments()[0]\n attachment.setContentType(\'application/x-gzip\')\n const blob = Utilities.ungzip(attachment)\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
783 次 |
最近记录: |