2

我的目标是编写类似于File > Download as > *Google 电子表格中当前功能的东西,但我希望它采用自定义格式。

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

到目前为止,我已经尝试了以下方法:

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

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

4

1 回答 1

2

看起来这是你必须做的。

  1. 创建一个 UiApp
  2. 在该应用程序内添加下载链接。
  3. 在电子表格上显示 UiInstance

它有点笨重,但它似乎是最干净的解决方案。

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));
}

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


目前,将用户引导至新页面的最佳方式是创建一个锚点小部件并让他们单击它。我们知道这不是一个理想的用户体验,但它应该足以满足必须的用例。

来源

于 2013-02-19T20:55:15.287 回答