函数仅将当前工作表导出到Excel,并带有值和格式



我有这个示例谷歌电子表格。我想创建一个谷歌应用程序脚本函数,只将名为"TargetSheet"的工作表导出到Excel。由于TargetSheet可能有公式,因此此导出只有值是很重要的。此外,保留颜色和格式也很重要。

最终文件应该是这样的。

有人建议我使用这个片段来导出表单,但由于我是谷歌应用程序脚本的初学者,我不太明白如何做到这一点。我应该把它复制到我的代码中吗?我应该以某种方式导入它吗?在让这个函数在我的脚本中工作之后,我想我需要创建一个函数来实现它。下面是这样的吗?

function exportarPlanilha() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var file = exportSpreadsheetToFile_(spreadsheet, 'xlsx');
return file;
}
  • 您希望将活动电子表格中的一个工作表(TargetSheet(导出为XLSX文件
  • 根据您问题中的URL示例脚本,您希望在Google Drive中创建XLSX文件
  • 你想使用谷歌应用程序脚本中的URL示例脚本来实现这一点

如果我的理解是正确的,这个答案怎么样?请将此视为几种可能的答案之一。

流量:

当我在你的问题中看到URL的示例脚本时,似乎流程如下。

  1. 将活动电子表格复制为临时电子表格
  2. 将公式转换为文本
  3. 删除除要导出的图纸之外的图纸
  4. 检索导出URL
  5. 从导出URL检索blob
  6. 将blob Crete为文件
  7. 删除临时电子表格

在您的情况下,导出类型是XLSX格式,它是常量。所以我认为工艺成本可以降低一点。因此,修改后的脚本如下。

示例脚本:

请将以下脚本复制并粘贴到电子表格的脚本编辑器中。请设置exportSheetName。然后,请在脚本编辑器中运行函数exportarPlanilha。当显示授权屏幕时,请对作用域进行授权。这样,脚本就运行了。

function exportarPlanilha() {
const exportSheetName = 'TargetSheet';  // Please set the target sheet name.
// 1. Copy the active Spreadsheet as a tempora Spreadsheet.
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet().copy('tmp');
// 2. Convert the formulas to the texts.
const targetRange = spreadsheet.getSheetByName(exportSheetName).getDataRange();
targetRange.copyTo(targetRange, {contentsOnly:true});
// 3. Delete the sheets except for a sheet you want to export.
spreadsheet.getSheets().forEach(sheet => {
if (exportSheetName != sheet.getName()) spreadsheet.deleteSheet(sheet)
});
// 4. Retrieve the blob from the export URL.
const id = spreadsheet.getId();
const xlsxBlob = UrlFetchApp.fetch(`https://docs.google.com/spreadsheets/export?id=${id}&exportFormat=xlsx`, {headers: {authorization: `Bearer ${ScriptApp.getOAuthToken()}`}}).getBlob();
// 5. Crete the blob as a file.
DriveApp.createFile(xlsxBlob.setName(`${exportSheetName}.xlsx`));
// 6. Delete the temporate Spreadsheet.
DriveApp.getFileById(id).setTrashed(true);
}
  • 在这种情况下,临时电子表格被移到垃圾箱中

注意:

  • 在这种情况下,请在脚本编辑器中启用V8
  • 在上面的脚本中,XLSX文件被创建到根文件夹中。如果你想创建文件到特定的文件夹,请告诉我

参考文献:

  • 副本(名称(
  • 复制到(目标,选项(
  • deleteSheet(工作表(
  • 类UrlFetchApp
  • createFile(blob(
  • setTrashed(已废弃(

如果我误解了你的问题,而这不是你想要的方向,我道歉。

最新更新