【问题标题】:To download a zip file from sidebar using GAS [duplicate]使用 GAS 从侧边栏下载 zip 文件 [重复]
【发布时间】:2017-12-02 10:14:17
【问题描述】:

我想在过程完成后触发文件下载(不使用云端硬盘服务)。

我将编码数据发送回客户端,客户端将编码数据加载到 iframe 中(因为 mime 是 zip,它会触发下载)。

但是,当数据很大时,我无法下载 zip。

我试过了

代码.gs

//zipBlob = some zipped binary data
 return {
                    'contents': "data:application/zip;base64, " + Utilities.base64Encode(zipBlob.getAs("application/zip").getBytes())
                };

HTML 边栏

    if (typeof d === 'object') {
       if (d.contents)
            window.open("aboutblank", "Preview").document.write('<head><style>body{margin:0}</style></head><iframe id="iframe" src="' + d.contents + '" scrolling="auto" frameborder="0px" marginheight="0px" marginwidth="0px" height="100%" width="100%"></iframe>');
    }

【问题讨论】:

    标签: javascript google-apps-script google-spreadsheet-api


    【解决方案1】:

    我找到了答案,

     download("export."+d.ext, d.contents)
    
    var download=function(c,b){var a=document.createElement("a"),d=dataURLtoBlob(b);a.setAttribute("href",URL.createObjectURL(d));a.setAttribute("download",c);a.style.display="none";document.body.appendChild(a);a.click();var e;a.addEventListener("click",e=function(){requestAnimationFrame(function(){URL.revokeObjectURL(a.href)});a.removeAttribute("href");a.removeEventListener("click",e)});document.body.removeChild(a)},dataURLtoBlob=function(c){var b=c.split(",");c=b[0].match(/:(.*?);/)[1];if(-1!==b[0].indexOf("base64")){b=
    atob(b[1]);for(var a=b.length,d=new Uint8Array(a);a--;)d[a]=b.charCodeAt(a);return new Blob([d],{type:c})}b=decodeURIComponent(b[1]);return new Blob([b],{type:c})};
    

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2016-08-26
      • 1970-01-01
      相关资源
      最近更新 更多