在Google Spreadsheets中编写自定义文件格式下载程序

时间:2013-02-19 20:15:32

标签: javascript google-apps-script google-sheets google-apps

我打算做的是写一些类似于Google Spreadsheets中当前File > Download as > *功能的内容,但我希望它采用自定义格式。

具体来说,我想将金融交易的电子表格转换为QIF或OFX文件,以便导入会计软件。实质上,按下UI上的按钮将下载当前打开的电子表格的QIF / OFX版本。

到目前为止,我已尝试过以下内容:

  • 发布使用doGet创建自定义文件的服务(通过实施ContentService)并使用TextOutput.downloadAsFile()将其作为下载文件返回。如果我直接使用浏览器调用端点,则此方法有效。
  • 尝试通过window.location将浏览器重定向到服务的URL,但这似乎在App脚本的上下文中不可用。
  • 尝试使用UrlFetchApp.fetch让前端(电子表格)让浏览器导航到服务的网址。这也不起作用(并不令人惊讶)。

那么,这是正确的方法吗?我怎么能攻击这个?

1 个答案:

答案 0 :(得分:2)

看起来这就是你要做的事情。

  1. 创建UiApp
  2. 添加该应用内的下载链接。
  3. 在电子表格中显示UiInstance
  4. 它有点笨重,但它似乎是最干净的解决方案。

    function downloadAsWhatever() {
      var app = UiApp.createApplication();
      app.add(app.createAnchor("Download the file now!", "https://script.google.com/macros/s/[...]/exec"))
      SpreadsheetApp.getActiveSpreadsheet().show(app.setWidth(300).setHeight(150));
    }
    

    您可以将应用的大小设置为您想要的任何内容。我选择将其设置得更小,以便在电子表格屏幕上占用更少的空间。


      

    现在,将用户定向到新页面的最佳方法是创建一个锚点窗口小部件并让它们单击它。我们知道这不是一个理想的用户体验,但它应该足以满足用例。

    Source