Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何在google sheets中下载驱动器非google文件(如PDF)_Google Apps Script - Fatal编程技术网

Google apps script 如何在google sheets中下载驱动器非google文件(如PDF)

Google apps script 如何在google sheets中下载驱动器非google文件(如PDF),google-apps-script,Google Apps Script,嗨,我已经尝试了一段时间,但找不到一个解决这个自动化 我有一个电子表格应用程序,用于跟踪为客户执行的工作。每个作业都是电子表格中的一行,作业完成后,它可以在驱动器中生成PDF发票 现在,我想改进发票自动化。我想在google表单中添加一个“下载发票”菜单项,开始将pdf下载到本地计算机,以便稍后发送到客户端。我目前手动完成这个阶段,有点容易出错 我知道如何添加菜单项,使位是好的 我的downloadFile函数在下面,从日志中查看,它似乎工作正常-它返回http 200和53000字节(正确大小

嗨,我已经尝试了一段时间,但找不到一个解决这个自动化

我有一个电子表格应用程序,用于跟踪为客户执行的工作。每个作业都是电子表格中的一行,作业完成后,它可以在驱动器中生成PDF发票

现在,我想改进发票自动化。我想在google表单中添加一个“下载发票”菜单项,开始将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');

  }
}
简短回答 用于获取用于下载文件的URL,然后将该URL添加到用户要单击的UI链接或按钮

评论 getDownloadURL将返回一个短期有效的临时URL

StackOverflow中有几个Q&A是指。请记住,它现在已被弃用

相关的

谢谢鲁本,你为我指明了正确的方向。UI不是我看过的东西,现在我看到它被HTML服务所取代。我创建了一个带有链接的小UI面板。当我点击其中的链接(带有google.com)时,该页面将加载到一个新的选项卡中。当我使用自己的document.getDownloadURL()链接时,新选项卡包含URL,但显示为空。也许这是我的任务,所以我会继续实验。刚刚修改了脚本,添加了两个链接,一个是谷歌文档,另一个是公共dropbox文件夹中的word文档。dropbox一号马上就开始工作了。我将进行实验-听起来像是内容类型问题或权限问题。我怀疑是前者。