【问题标题】:Writing a custom file format downloader in Google Spreadsheets在 Google 电子表格中编写自定义文件格式下载器
【发布时间】:2013-02-19 20:15:32
【问题描述】:
我的目标是编写类似于目前在 Google 电子表格中的 File > Download as > * 功能,但我希望它采用自定义格式。
具体来说,我想将财务交易电子表格转换为 QIF 或 OFX 文件,以便导入会计软件。本质上,按下 UI 上的按钮将下载当前打开的电子表格的 QIF/OFX 版本。
到目前为止,我已经尝试了以下方法:
- 发布使用
ContentService 的服务(通过实现doGet)来创建自定义文件并使用TextOutput.downloadAsFile() 将其作为下载返回。如果我直接使用浏览器调用端点,这将有效。
- 尝试通过 window.location 将浏览器重定向到服务的 URL,但这在应用脚本的上下文中似乎不可用。
- 尝试使用
UrlFetchApp.fetch 让前端(电子表格)让浏览器导航到服务的URL。这也不起作用(并不令人惊讶)。
那么,这是正确的方法吗?我还能如何攻击它?
【问题讨论】:
标签:
javascript
google-apps-script
google-sheets
google-apps
【解决方案1】:
看起来这是你必须做的。
- 创建 UiApp
- 在该应用内添加下载链接。
- 在电子表格上显示 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));
}
您可以根据需要设置应用程序的大小。我选择将其设置得更小,以便在电子表格屏幕上占用更少的空间。
目前,将用户引导至新页面的最佳方式是创建一个锚点小部件并让他们点击它。我们知道这不是理想的用户体验,但对于必须用例来说应该足够了。
Source