首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将“自动”电子表格作为.xlsx下载到本地机器上

将“自动”电子表格作为.xlsx下载到本地机器上
EN

Stack Overflow用户
提问于 2016-05-13 14:06:08
回答 1查看 11.3K关注 0票数 7

参见下面的函数,该函数将活动的Google电子表格转换为.xlsx文件。脚本将文件保存在Google中。

代码语言:javascript
运行
复制
function downloadAsXlsx() {

var spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); 
var ssID = spreadSheet.getId();

Logger.log(ssID);

var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?format=xlsx";   
var params = {method:"GET", headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var response = UrlFetchApp.fetch(url, params);

// save to drive
DriveApp.createFile(response);

}

如果您将上面URL中的ssID替换为活动谷歌电子表格的实际文件id,并在浏览器中复制和粘贴该URL,则将“自动”下载活动电子表格。这正是我需要添加到上面的脚本。

我的问题是如何更改和/或扩展上述函数,以便将文件下载到默认下载文件夹中的本地机器上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-20 01:57:48

正如您注意到的,您在问题中发布的代码将一个XLS版本的Google电子表格导出到Google。如果你是同步谷歌驱动器到你的电脑,那么你结束了一个副本在你的电脑以及.但这不是你想要的。您需要一种方式触发HTTP下载的谷歌工作表,使用系统对话框,让您选择在您的PC上的位置,以保存下载的文件。

要做到这一点,我们不能使用服务器端的Google脚本技术,因为服务器无法访问您机器的资源。相反,我们需要利用浏览器。由于您对从“活动电子表格”进行此操作感兴趣,因此使用自定义菜单项扩展Google电子表格的UI以提供包含下载链接的对话框是合乎逻辑的。

值得注意的是,支持这一点所需的代码非常少。这项工作由您的浏览器完成,基于包含<a> (锚点)标记的一行HTML。

代码语言:javascript
运行
复制
/**
 * 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');
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37212135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档