【问题标题】:downloadAsFile (google's Content Service) is not workingdownloadAsFile(谷歌的内容服务)不工作
【发布时间】:2012-07-27 07:05:07
【问题描述】:

我正在尝试使用 Google 脚本的内容服务将信息从电子表格导出到 XML 文件。代码如下所示:

function makeXML() {
    var StringToXML = "<tag></tag>";
    var output = ContentService.createTextOutput();
    output.setMimeType(ContentService.MimeType.XML);
    output.setContent(StringToXML);
    output.downloadAsFile("f.xml");
}

当我启动此功能时 - 没有任何反应。虽然没有错误,但该功能运行正常。此外,当我尝试通过将 msgboxes 放置在某些行中(例如通过获取输出内容并发送消息)来调试它时,一切看起来都很好。除了downloadAsFile

我也尝试过不设置 mime 类型(默认为 TEXT),但 downloadAsFile 仍然无法正常工作。试过谷歌浏览器、火狐。

如何让它发挥作用?

【问题讨论】:

    标签: xml google-apps-script spreadsheet


    【解决方案1】:

    您需要返回输出。 这是您修改后的代码

    function makeXML() {
        var StringToXML = "<tag></tag>";
        var output = ContentService.createTextOutput();
        output.setMimeType(ContentService.MimeType.XML);
        output.setContent(StringToXML);
        output.downloadAsFile("f.xml");
        return output;
    }
    

    如果你根据你的方法在doGet或doPost中调用这个函数,浏览器会提示你下载文件。

    【讨论】:

    • 感谢您的回答。我试过输入return output;,但还是不行。是否需要使用 doGet 或 doPost?我从菜单中调用函数(onOpen 中的 addMenu)
    • 是的,这是必要的。只有当您通过已发布的服务 URL(webapp url)访问您的应用程序时,downloadAsFile 才会起作用。对于浏览器, doget 和 doPost 是入口点。浏览器不会运行 makeXML() 函数,除非你在 doGet 函数中调用它(即在 doGet 中返回 makeXML();)。或者,您可以将函数 makeXml 重命名为 doGet,并通过 wepApp url 打开它
    • 使用这个doGet最简单的方法是什么?在我的情况下,我只有一个电子表格,只想优化和加快将其数据传输为 XML 格式的速度(根据某种算法)。我需要在电子表格或类似的东西中创建一个按钮吗?
    • @user1554754 您可以参考此网址了解如何将您的应用部署为网络应用developers.google.com/apps-script/execution_web_apps
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多