我有这个 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
虽然我不确定我是否能正确理解你的情况,但是下面的修改如何?
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
而不是原始文件名。