【问题标题】:How to download an .xlsx file from a url?如何从 url 下载 .xlsx 文件?
【发布时间】:2019-12-13 15:41:38
【问题描述】:

所以基本上我每天都会从一个广告平台收到一份报告,它是一个网址,一旦我点击它,我的浏览器就会开始下载一个 Excel 文件。

我在使用 Google 应用脚本,但不知道应该怎么做才能下载文件。理想情况下,一旦我可以访问 .xlsx 文件,我会将其转换为 .csv 并带有 ...

var csv = theFile.getAs('text/csv')

.. 然后很容易粘贴到 gsheet 中。如果有人想知道如何处理这将是非常有帮助的。

谢谢, 亚历克斯

【问题讨论】:

  • 您是否可以分享实际链接,以便我们就如何获取文件提供建议?此外,如果您可以分享您迄今为止尝试过的所有内容 - 从代码 POV 开始,这将有所帮助。
  • 嘿,不幸的是,我无法分享链接,因为它包含我客户的一些敏感数据......但是到目前为止我可以分享一些代码(tbf,现在主要是我的 gmail ,应用一些标签,提取正确的线程和最后一封电子邮件以找到报告的 url...
  • if (subject == reportName && sentFrom == expeditor && date == today.valueOf()) { var body = email.getBody() var startIndex = body.indexOf("报告下载地址: ") var endIndex = body.indexOf("此下载链接过期") var substring = body.substring(startIndex, endIndex) var startIndex2 = substring.indexOf("http") var endIndex2 = substring.indexOf('">' ) var url = substring.substring(startIndex2, endIndex2)

标签: url google-apps-script download xlsx


【解决方案1】:

假设文件不在任何受密码保护的网站后面:

var link = '{{link}}';

var response = UrlFetchApp.fetch(link);
var excelfile = DriveApp.createFile(response);

var driveresource = 
   {
      title: excelfile.getName(),
      mimeType: MimeType.GOOGLE.SHEETS
   };

  Drive.Files.insert(driveresource,response);

这应该下载 Excel 文件并在主驱动器文件夹中创建 google 表格。

【讨论】:

  • 嘿 Rob,感谢您回来找我,我已经尝试过此代码,但收到此错误消息:
  • 嘿 Rob,感谢您回来找我,我已经尝试过此代码,但收到此错误消息:TypeError: Cannot read property 'SHEETS' of undefined 另外,是否需要双花括号围绕网址?
  • 以上代码有效,我已经测试过了。不需要花括号,您应该将 {{link}} 换成您的实际 https://... 链接
  • @AlexandraMorel-Fonteray,当链接中引用的文件实际上不是 Excel 文件 blob 时,我能够复制您收到的错误。当您从链接中删除大括号后,是否解决了您的问题或者您仍然收到此错误?
【解决方案2】:

您的代码有效,我实际上需要进入 资源 > 高级 Google 服务 > 开启“Drive API”

        var finalUrl = url1.toString().replace(/%3A/g,':').replace(/%2F/g,'/').replace(/%3F/g,'?').replace(/%26/g,'&').replace(/%3D/g,'=').replace(/%25/g,'%')

    var response = UrlFetchApp.fetch(finalUrl);
    var excelfile = DriveApp.createFile(response);

    var driveresource = 
  {
    title: excelfile.getName(),
    mimeType: MimeType.GOOGLE_SHEETS
  };

   Drive.Files.insert(driveresource,response);

我来了!我不确定如何找到新创建的文件的 URL...

但无论如何感谢你和@Sourabh Choraria 在这里帮助我。

【讨论】:

    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2020-07-31
    • 2021-09-22
    • 2021-10-24
    相关资源
    最近更新 更多