您好我已经尝试了一段时间,但无法找到此自动化的修复程序。
我有一个电子表格应用,用于跟踪为客户执行的工作。每个作业都是电子表格中的一行,它可以在作业完成时在驱动器中生成PDF发票。
现在,我想改进发票自动化。我想在谷歌工作表中添加一个“下载发票”菜单项,开始下载pdf到本地计算机,以便以后发送到客户端。我目前手动执行此阶段,它有点容易出错。
我知道如何添加菜单项,以便位好。
我的downloadFile功能在下面,从查看日志看起来工作正常 - 它返回http 200和53000字节(正确大小)但没有文件出现。当我点击菜单时,我想要的是“保存为对话框”。
我怀疑我必须将下载与GUI组件相关联,但不确定如何进展。
/** start a download dialog for a PDF file so I can save it on the c: drive */
function downloadFile()
{
// invoicesFolderID is the folder ID defined elsewhere
var theFolder = DriveApp.getFolderById(invoicesFolderID);
Logger.log("reading from folder: " + theFolder.getName() + " " + theFolder.getId());
// fixed filename for testing
var filename = "Invoice_xyz.pdf";
var matchingFileList = theFolder.getFilesByName(filename);
Logger.log("matchingFileList: has files? " + matchingFileList.hasNext());
// don't allow duplicates
if (matchingFileList.hasNext())
{
f = matchingFileList.next()
Logger.log("filename=" + f.getName());
Logger.log("ID=" + f.getId());
Logger.log("URL=" + f.getDownloadUrl());
var options = {
headers: {
"Authorization": "Bearer " + ScriptApp.getOAuthToken(),
// tried various http methods
"method" : "get",
}
};
// believe that alt=media needs to be added for pdf files
var httpResp = UrlFetchApp.fetch(f.getDownloadUrl() + "?alt=media", options);
Logger.log("http repsonse " + httpResp.getResponseCode());
Logger.log("http headers " + httpResp.getHeaders().toSource());
Logger.log("http headers len " + httpResp.getContent().length);
// tried adding this
//var pdf = httpResp.getAs('application/pdf');
}
}
答案 0 :(得分:0)
使用getDownloadUrl()获取用于下载文件的URL,然后将该URL添加到用户点击的UI链接或按钮。
getDownloadURL 将返回一个可以在短时间内使用的临时网址。
StackOverflow中有几个Q& A引用Class Anchor。请记住,它现在已被弃用。