使用Google Apps脚本下载生成的XML

时间:2017-12-06 20:48:01

标签: google-apps-script

我有一个绑定到电子表格的Google Apps脚本,可将电子表格转换为XML。

有没有办法在任务完成时将生成的XML文件下载到用户计算机上?

我希望它的行为就像电子表格的“文件>下载格式”功能一样。

由于

1 个答案:

答案 0 :(得分:1)

这个示例脚本怎么样?请将此视为几个答案之一。

为了使用此示例,首先请设置生成的XML文件的文件ID。为此,例如,它被认为是以下方法。

  1. 当用户单击下载按钮时,它会创建XML文件并检索文件ID。
  2. 创建XML文件时使用PropertiesService保存XML文件的文件ID,当用户单击下载按钮时,它会检索文件ID。
  3. FLOW:

    此示例脚本的流程如下:

    1. 打开电子表格,在菜单栏中创建一个下载菜单。
      • 您也可以直接运行onOpen()
    2. 当用户点击下载按钮时,在GAS端检索文件ID。
    3. 从文件ID创建下载URL。下载URL和文件名将发送到Javascript的download(obj)
    4. 创建下载标签,然后在Javascript端点击它。
      • 这样,用户就可以下载文件ID文件。
    5. 示例脚本:

      Code.gs

      function onOpen() {
        SpreadsheetApp.getUi()
                      .createMenu('download')
                      .addItem('download files', 'dialog')
                      .addToUi();
      }
      
      function dialog() {
        var html = HtmlService.createHtmlOutputFromFile('download');
        SpreadsheetApp.getUi().showModalDialog(html, 'Sample dialog');
      }
      
      function getDownloadUrl() {
        var id = "### file id ###"; // Please put file ID of your generated XLM file.
      
        var file = DriveApp.getFileById(id);
        return {
          url: file.getDownloadUrl().replace("?e=download&gd=true",""),
          filename: file.getName()
        };
      }
      

      download.html

      <input type="button" value="download" onclick="getUrl()" />
      <script>
        function getUrl() {
          google.script.run.withSuccessHandler(download).getDownloadUrl();
        }
      
        function download(obj) {
          var d = document.createElement('a');
          d.href = obj.url;
          d.download = obj.filename;
          d.click();
        }
      </script>
      

      注意:

      此示例脚本非常简单。所以请根据您的环境进行修改。

      如果我误解了你的问题,我很抱歉。