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

Google apps script 使用Google Apps脚本下载生成的XML,google-apps-script,Google Apps Script,我有一个GoogleApps脚本绑定到一个将电子表格转换为XML的电子表格 任务完成后,是否有办法将生成的XML文件下载到用户计算机上 我希望它的行为就像电子表格的“文件>下载到格式”功能一样 谢谢这个示例脚本怎么样?请把这当作几个答案之一 为了使用此示例,首先,请设置生成的XML文件的文件ID。例如,为此,考虑采用以下方法 当用户单击下载按钮时,它将创建XML文件并检索文件ID 创建XML文件时,使用PropertiesService保存XML文件的文件ID,当用户单击下载按钮时,它将检索文件

我有一个GoogleApps脚本绑定到一个将电子表格转换为XML的电子表格

任务完成后,是否有办法将生成的XML文件下载到用户计算机上

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


谢谢

这个示例脚本怎么样?请把这当作几个答案之一

为了使用此示例,首先,请设置生成的XML文件的文件ID。例如,为此,考虑采用以下方法

  • 当用户单击下载按钮时,它将创建XML文件并检索文件ID
  • 创建XML文件时,使用PropertiesService保存XML文件的文件ID,当用户单击下载按钮时,它将检索文件ID
  • 流量: 此示例脚本的流程如下所示

  • 通过打开电子表格,在菜单栏上创建一个下载菜单。
    • 您还可以直接运行
      onOpen()
  • 当用户单击下载按钮时,在气体侧检索文件ID
  • 从文件ID创建下载URL。下载URL和文件名被发送到Javascript的
    download(obj)
  • 创建一个用于下载的标记,并在Javascript端单击它。
    • 这样,用户可以下载文件ID的文件
  • 示例脚本: 代码.gs 下载.html
    
    函数getUrl(){
    google.script.run.withSuccessHandler(下载).getDownloadUrl();
    }
    功能下载(obj){
    var d=document.createElement('a');
    d、 href=obj.url;
    d、 下载=obj.filename;
    d、 单击();
    }
    
    注: 这个示例脚本非常简单。因此,请针对您的环境修改此选项


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

    你不是真的要求将文件上传(推送)到另一台计算机吗?请你澄清一下。如果是这种情况(推送到另一台计算机):没有HTTPS端点就不能将文件推送到。否则,如果是从目标计算机(pull)下载,则需要在目标设备上进行定时处理。至少在过去我就是这样解决这个问题的。不,我只是想把生成的XML文件下载(拉)到当前运行电子表格的计算机上,由计算机执行“导出为XML”的操作,效果几乎很好。我在驱动器中生成了该文件,然后浏览器尝试自动下载该文件。但是,即使我指定了
    file.setSharing(DriveApp.Access.anywhere,DriveApp.Permission.VIEW)
    并且我可以在驱动程序中读取文件,下载仍会失败,并显示“需要自动化”。你知道授权有什么问题吗?没关系,它是有效的。在downloadUrl中,
    e=download&gd=true
    在开始时不存在,因此我从替换模式中删除了
    ,我工作得很好。非常感谢!:)@我很高兴能帮助你。也谢谢你。
    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()
      };
    }
    
    <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>