Google apps script 如何在google sheets中下载驱动器非google文件(如PDF)
嗨,我已经尝试了一段时间,但找不到一个解决这个自动化 我有一个电子表格应用程序,用于跟踪为客户执行的工作。每个作业都是电子表格中的一行,作业完成后,它可以在驱动器中生成PDF发票 现在,我想改进发票自动化。我想在google表单中添加一个“下载发票”菜单项,开始将pdf下载到本地计算机,以便稍后发送到客户端。我目前手动完成这个阶段,有点容易出错 我知道如何添加菜单项,使位是好的 我的downloadFile函数在下面,从日志中查看,它似乎工作正常-它返回http 200和53000字节(正确大小),但没有显示任何文件。我想要的是当我点击菜单时打开一个类似“另存为对话框”的东西 我怀疑我必须将下载与GUI组件相关联,但不确定如何进行这一点Google apps script 如何在google sheets中下载驱动器非google文件(如PDF),google-apps-script,Google Apps Script,嗨,我已经尝试了一段时间,但找不到一个解决这个自动化 我有一个电子表格应用程序,用于跟踪为客户执行的工作。每个作业都是电子表格中的一行,作业完成后,它可以在驱动器中生成PDF发票 现在,我想改进发票自动化。我想在google表单中添加一个“下载发票”菜单项,开始将pdf下载到本地计算机,以便稍后发送到客户端。我目前手动完成这个阶段,有点容易出错 我知道如何添加菜单项,使位是好的 我的downloadFile函数在下面,从日志中查看,它似乎工作正常-它返回http 200和53000字节(正确大小
/** 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');
}
}
简短回答
用于获取用于下载文件的URL,然后将该URL添加到用户要单击的UI链接或按钮
评论
getDownloadURL将返回一个短期有效的临时URL
StackOverflow中有几个Q&A是指。请记住,它现在已被弃用
相关的
谢谢鲁本,你为我指明了正确的方向。UI不是我看过的东西,现在我看到它被HTML服务所取代。我创建了一个带有链接的小UI面板。当我点击其中的链接(带有google.com)时,该页面将加载到一个新的选项卡中。当我使用自己的document.getDownloadURL()链接时,新选项卡包含URL,但显示为空。也许这是我的任务,所以我会继续实验。刚刚修改了脚本,添加了两个链接,一个是谷歌文档,另一个是公共dropbox文件夹中的word文档。dropbox一号马上就开始工作了。我将进行实验-听起来像是内容类型问题或权限问题。我怀疑是前者。