使用 Google Apps 脚本从表格粘贴数据时避免更改 XLSX 表格名称

问题描述 投票:0回答:1

我有这个 Google Apps 脚本功能,可以将数据从 Google 表格中的基本工作表粘贴到 XLSX 文件中。它工作正常,但我有一个问题。执行 file.setContent() 行时,Excel 文件的工作表将自动重命名以匹配 XLSX 文件名,包括 .xlsx 扩展名(工作表将重命名为 interop.xlsx)。

我需要工作表名称不更改,或者至少能够控制该名称,因为我正在使用MSExcelParser,并且当工作表名称包含点时,此解析器不会返回数据。

我需要实现这一目标,以完全自动化我正在处理的工作流程。我能做什么?

    function overwriteXLSX(sheet, fileId) {
    
      var docSheet = sheet || SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Interoperabilidad');
    
      // Get Data Range
      var lastRow = docSheet.getLastRow();
      var lastColumn = docSheet.getLastColumn();
      
      var valuesRange = docSheet.getRange(1, 2, lastRow - 2, lastColumn - 1);
      var dataValues = valuesRange.getValues();
      
      // Clean Empty Rows
      valoresDatos = dataValues.filter(row => row.some(cell => cell !== ""));
    
      // Convert to TSV format (Tab-Separated Values)
      var tsvContent = dataValues.map(row => row.join("\t")).join("\n");
    
      // Generate Blob with TSV
      var blob = Utilities.newBlob(tsvContent, 'text/tab-separated-values', 'datos.tsv');
      
      // Get Google Drive XLSX File
      var file = DriveApp.getFileById(fileId);
      
      // Paste TSV in XLSX File
      file.setContent(blob.getDataAsString());
    }

dgs

javascript excel google-sheets google-apps-script
1个回答
0
投票

虽然我不确定我是否能正确理解你的情况,但是下面的修改如何?

来自:

file.setContent(blob.getDataAsString());

致:

var sheetName = "sample"; // Please set your expected sheet name.
var orgName = file.getName();
file.setName(sheetName).setContent(blob.getDataAsString()).setName(orgName);

这样,当您的脚本反映此修改运行时,工作表名称将设置为

sheetName
而不是原始文件名。

© www.soinside.com 2019 - 2024. All rights reserved.