You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:使用Apps Script将Google Sheet导出为Excel格式至Google Drive

解决将Google表格导出为Excel并备份到Drive文件夹的问题

我明白你的需求啦——现在的代码只能复制Google表格格式的文件到目标文件夹,但你想要的是导出成Excel格式的备份。别担心,我们只需要修改代码逻辑,从「复制表格文件」改成「导出表格内容为Excel并保存」就可以了。

下面是修改后的完整代码,我会在后面解释关键改动:

function exportAsExcelBackup() {
  // 生成带时间戳的文件名,加上.xlsx后缀
  var formattedDate = Utilities.formatDate(new Date(), "CET", "yyyy-MM-dd' 'HH:mm");
  var fileName = "Backup Copy " + formattedDate + ".xlsx";
  
  // 替换成你的目标文件夹ID(就是你原代码里的那个ID)
  var destinationFolderId = "1vFL98cgKdMHLNLSc5...";
  var destinationFolder = DriveApp.getFolderById(destinationFolderId);
  
  // 获取要备份的Google表格(如果是运行当前表格的脚本,用getActiveSpreadsheet即可;如果是指定其他表格,用openById并传入表格ID)
  var sourceSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // 如果你要备份的不是当前打开的表格,替换成下面这行并填写表格ID:
  // var sourceSpreadsheet = SpreadsheetApp.openById("你的Google表格ID");
  
  // 构造Excel格式的导出URL
  var exportUrl = "https://docs.google.com/spreadsheets/d/" + sourceSpreadsheet.getId() + "/export?format=xlsx";
  
  // 通过UrlFetchApp获取Excel文件内容,需要带上OAuth令牌进行身份验证
  var response = UrlFetchApp.fetch(exportUrl, {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
    }
  });
  
  // 将获取到的内容转换成Blob对象,并设置文件名
  var excelBlob = response.getBlob().setName(fileName);
  
  // 将Blob保存到目标文件夹
  destinationFolder.createFile(excelBlob);
  
  Logger.log("Excel备份已成功保存:" + fileName);
}

关键改动说明:

  • 从「复制文件」改为「导出内容」:原代码是直接复制Google表格文件,现在我们通过Google Sheets的官方导出接口,直接获取Excel格式的文件内容。
  • 身份验证:添加了Authorization请求头,带上脚本的OAuth令牌,确保脚本有权限访问和导出你的表格内容。
  • 文件名后缀:给文件名加上了.xlsx后缀,保证保存的是标准Excel格式文件。
  • Blob对象处理:将导出的内容转换成Blob,再保存到目标文件夹,这是Drive API中创建文件的标准方式。

使用注意事项:

  • 第一次运行脚本时,会弹出权限授权提示,你需要允许脚本访问你的Google表格和Drive文件,这样才能完成导出和保存操作。
  • 如果要备份的不是当前打开的表格,记得替换代码中sourceSpreadsheet的获取方式,改成openById并填入目标表格的ID。

内容的提问来源于stack exchange,提问作者Erika

火山引擎 最新活动