【问题标题】:How to serve (PDF,binary) file from GAS web to a browser?如何将(PDF,二进制)文件从 GAS Web 服务到浏览器?
【发布时间】:2021-05-15 09:57:15
【问题描述】:

我的 Google 应用程序脚本创建 PDF 文件。我想让用户下载它。我想让每个人都更容易,所以我认为 Web 应用程序将是一个不错的选择。所以我开始用谷歌搜索解决方案,但我找不到任何有用的东西。

理想情况下,我希望有一个表单,其中网络用户输入触发 PDF 文件创建的代码(该部分已准备好 - PDF 位于 Google Drive 中),然后通过网络浏览器将文件下载到最终用户计算机。

这可以通过在 Google 应用程序脚本中创建的网络实现吗?

从这个答案中我发现我正在寻找的东西是不可能的https://stackoverflow.com/a/36701196/250422

我找到的最接近的解决方案是google-web-app-script-to-auto-download-from-google-drive

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我相信你的目标如下。

    • 您想让用户使用用户的浏览器下载 PDF 文件。
    • 您希望使用由 Google Apps 脚本创建的 Web 应用程序来实现此目的。

    在这种情况下,下面的示例脚本怎么样?在此示例脚本中,PDF 文件被转换为数据 URL,并让用户使用浏览器下载为 PDF 文件。

    示例脚本:

    Google Apps 脚本端:Code.gs

    请将以下脚本以Code.gs 的形式复制并粘贴到脚本编辑器中。并且,请设置 PDF 文件的文件 ID。还有,please deploy Web Apps

    function doGet() {
      return HtmlService.createHtmlOutputFromFile("index");
    }
    
    function createDataUrl() {
      const fileId = "###"; // Please set the file ID of the PDF file you want to make user download.
      const file = DriveApp.getFileById(fileId);
      return {
        data: `data:${file.getMimeType()};base64,${Utilities.base64Encode(file.getBlob().getBytes())}`,
        filename: file.getName(),
      };
    }
    

    HTML&Javascript 端:index.html

    请将以下脚本以index.html 的形式复制并粘贴到脚本编辑器中。

    <input type="button" value="download" onclick="download()" />
    <script>
      function download() {
        google.script.run
          .withSuccessHandler(({ data, filename }) => {
            if (data && filename) {
              const a = document.createElement("a");
              document.body.appendChild(a);
              a.download = filename;
              a.href = data;
              a.click();
            }
          })
          .createDataUrl();
      }
    </script>
    
    • 在这种情况下,当您使用浏览器访问已部署的 Web 应用程序并单击“下载”按钮时,PDF 文件将下载到您的本地 PC。

    注意:

    • 这是一个简单的示例脚本。所以,请根据您的实际情况进行修改。
    • 当您修改 Google Apps 脚本时,请将部署修改为新版本。这样,修改后的脚本就会反映到 Web 应用程序中。请注意这一点。
    • 您可以在“Redeploying Web Apps without Changing URL of Web Apps for new IDE”的报告中查看详细信息。

    参考资料:

    【讨论】:

    • 这正是我想要的。谢谢你。文件有多大?
    • @Radek 感谢您的回复。我很高兴你的问题得到了解决。关于您对How big could be the file? 的附加问题,根据我的经验,我确认可以使用此脚本下载 20 MB 的 zip 文件。但是当大小为 30 MB 时,发生了错误。对此我深表歉意。
    • 是 30MB 谷歌还是网络浏览器限制?
    • @Radek 感谢您的回复。关于is that 30MB Google or web browser limitation?,我认为这可能是由于浏览器的原因,因为在 Google Apps Script 中,最大 blob 大小为 50 MB。但是,这只是我的猜测。这是因为我的技术不好。对此我深表歉意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2014-07-27
    • 2021-05-31
    • 2017-08-18
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多