谷歌表格应用程序脚本,点击按钮以.xlsx格式下载表格



我有一个谷歌表单电子表格,里面有一个我通过Insert>创建的简单按钮;绘画我想为按钮分配一个脚本,当单击该脚本时,会将不同的选项卡/工作表作为excel文件下载到本地计算机。

我已经在这篇文章中找到了一个解决方案,它实现了我所寻找的相同结果,但它是通过模式对话框/UI对象实现的。它使用HTML服务。

*编辑:以下是链接到上面的帖子中的代码:

/**
* Adds a custom menu
*
* @param {Object} e The event parameter for a simple onOpen trigger.
*/
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Custom')
.addItem('Download as XLSX', 'downloadXLS_GUI')
.addToUi();
}

/**
* Display a modal dialog with a single download link.
*
* From: http://stackoverflow.com/a/37336778/1677912
*/
function downloadXLS_GUI() {
// Get current spreadsheet's ID, place in download URL
var ssID = SpreadsheetApp.getActive().getId();
var URL = 'https://docs.google.com/spreadsheets/d/'+ssID+'/export?format=xlsx';
// Display a modal dialog box with download link.
var htmlOutput = HtmlService
.createHtmlOutput('<a href="'+URL+'">Click to download</a>')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(80)
.setHeight(60);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Download XLS');
}

我尝试过这个解决方案,它确实有效,但我想知道是否可以用一个简单的按钮绘图来完成;也就是说,我想将触发器指定给一个可以放置在图纸主体上的形状,而不是添加到功能区的自定义菜单。

任何帮助都将不胜感激。

*更新:上面的想法是为了消除用户第二次点击的需要。在做了更多的研究之后,除非用户更改浏览器设置以允许弹出窗口,否则这似乎是不可能的。这是因为默认情况下,只有直接的用户操作才能打开URL。但我想要的功能需要执行代码,然后尝试打开URL,所以它被浏览器阻止了。点击此处查看更多信息。因此,这种对话框方法似乎是目前可用的最佳解决方案。

简单回答:仅使用Google Apps脚本是不可能的。

这是因为谷歌应用程序脚本无法与用户的本地环境进行交互。

一种选择是将Google Apps脚本与Google Drive for Desktop一起使用,即通过制作脚本来创建XLSX文件并将其移动到设置为脱机可用的文件夹中。

来自问题

我想将触发器分配给一个可以放置在图纸主体上的形状,而不是添加到功能区的自定义菜单。

只需将downloadXLS_GUI指定给形状。有关如何在谷歌表单中为形状分配函数的详细说明,请查看官方指南。

相关

  • 如何使用应用程序脚本在谷歌电子表格的单元格中添加UI

最新更新