使用ashx从URL下载文件

时间:2014-04-27 03:12:05

标签: google-apps-script ashx

刚开始使用谷歌脚本,似乎无法找到下载文件的解决方案。这是问题所在:

  1. 每天在100多个网址上运行脚本
  2. 每个网址都是自动下载文件的.ashx
  3. 包含的脚本是下载文件,但不是文件类型(.xls)
  4. 唯一的解决方法是手动将Google云端硬盘中的文件扩展名更改为.xls,以便正确查看
  5. 问题:在运行脚本时,无论如何都要将.ashx URL中的文件保存为.xls文件?我完全可以做一些完全不同的事情但是需要能够下载这些文件作为.xls'。

    感谢任何sugestions, 杰森

    function getFileFromURL(fileURL, folder) {
    
    
    var rc = 404;        
    var fileName = "";
    var fileSize = 0;
    
    try {
    var response = UrlFetchApp.fetch("http://www.test.com/InventoryXLS?viewid=450");
    var rc = response.getResponseCode();
    } catch (e)
    {
    // fetch() does not handle unresolved DNS or file not found errors
    // We'll treat all unhandled errors as "404 Not Found"
    // This catch block simply suppresses the error
    debugger;
    }
    
    if (rc == 200) {
    var fileBlob = response.getBlob()
    var folder = DocsList.getFolder("MyFolderNameinDrive");
    if (folder != null) {
      var file = folder.createFile(fileBlob);
      fileName = file.getName();
      fileSize = file.getSize();
    }
    }
    
    var retObj = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
    debugger;  // Stop to observe if in debugger
    return retObj
    }
    

1 个答案:

答案 0 :(得分:0)

如果不对.ashx文件本身进行测试,我不知道这是否可行,但几周前实现了使用apps脚本转换文件的能力。 See number 15 on this issue.

然后,您可能不希望将文件转换为Google表格。如果是这样,请忽略包含{convert: true}的可选参数。希望这仍然能够正确设置文件的名称和mimeType。否则,我将删除此答案,我们将重新开始!

或许类似于:

var file = {
  title: 'Converted Spreadsheet',
  mimeType: 'application/vnd.ms-excel'
};
file = Drive.Files.insert(file, fileBlob, {
  convert: true
});

如果您可以共享.ashx文件,我可以进行更多测试......