这是我的代码:
function myFunction() {
var url = "https://cdn-04.anonfile.com/t3ScWad7b9/fc36c282-1522257874/CRASH_FILES__2018.03.24.14.06.27_.zip";
var blob = UrlFetchApp.fetch(url).getBlob();
GmailApp.sendEmail("derekantrican@gmail.com", "", "", {attachments: [blob]});
}
如您所见,该函数从URL获取文件(.zip)并将其附加到随后发送的电子邮件中。问题是Google的服务器阻止了.zip:
"了解更多"在这里引导:https://support.google.com/mail/answer/6590?hl=en
此.zip(您可以自己从网址下载)只包含两个.log
个文件和一个.xml
文件 - 上面的网址都没有禁止这些文件。
我还尝试先上传到Google云端硬盘,然后发送:
function myFunction(){
var url = "https://cdn-04.anonfile.com/t3ScWad7b9/fc36c282-1522257874/CRASH_FILES__2018.03.24.14.06.27_.zip";
var zipBlob = UrlFetchApp.fetch(url).getBlob();
zipBlob.setContentType("application/zip");
var file = DriveApp.createFile(zipBlob);
GmailApp.sendEmail("derekantrican@gmail.com", "", "", {attachments: [file.getBlob()]});
}
结果相同。还有其他建议吗?
答案 0 :(得分:1)
您是否真的检查了' zip'的内容?保存到Google云端硬盘的文件?问题可能是由于您附加了HTML页面而不是zip文件。您提供的链接适用于着陆页,而不是下载本身,因此页面内容正是您调用UrlFetchApp.fetch()时所提供的内容。
以下是发送“GET'”之后保存到Google云端硬盘的内容。请求链接:
该页面要求用户手动单击按钮以启动下载。没有重定向,因此您无法使用此模式获取文件:
UrlFetchApp.feth(url, {followRedirects: true});
问题是,你能获得文件的实际链接吗?好吧,有点儿。在Chrome中,按 Ctrl + J (Windows)或 CMD + Shift + J (MacOS)。文件名旁边显示的URL是文件的实际直接链接。但是,这些都是非常短暂的,并在几秒钟内到期。
您可以抓取链接并快速将其粘贴到代码中以确保其正常工作
var blob = UrlFetchApp.fetch(url).getBlob();
Logger.log(blob.getContentType()); //logs 'application/zip'
Logger.log(blob.getName()); // logs CRASH_FILES__2018.03.24.14.06.27_.zip
DriveApp.createFile(blob);