如何在Google Apps Script中限制HTML表格仅显示前4列?
解决方案
要只显示数据源的前4列,你需要修改代码中两个核心循环的终止条件,同时可选择性优化数据存储逻辑:
关键修改点
- 表头循环:限制为仅处理前4个表头元素
- 表格内容循环:限制每行仅输出前4个单元格
- 可选优化:收集用户数据时直接截取前4列,减少冗余数据存储
修改后的完整代码
var sheetID = 'example'; var dataSheet = 'SOP Update ACK'; var emailHeader = 'Email Address'; var activeUser = Session.getActiveUser(); var ss = SpreadsheetApp.openById(sheetID); function doGet(e) { return HtmlService.createHtmlOutputFromFile('Index').setTitle('My SOP Updates'); } function currentUser() { if (activeUser !== '') { return activeUser.getEmail(); } else { return "Couldn't detect user!!!"; } } function getData() { var sheetName = dataSheet; var activeSheet = ss.getSheetByName(sheetName); var values = activeSheet.getDataRange().getDisplayValues(); var header = values[0]; var emailIndex = header.indexOf(emailHeader); var userData = []; for (var i = 0; i < values.length; i++) { if (values[i][emailIndex] == activeUser) { // 可选:仅保留当前行的前4列数据 userData.push(values[i].slice(0, 4)); } } if (userData.length > 0) { var tableStart = '\n<table class="table table-hover table-sm">'; var tableHead = '\n<thead>\n<tr>'; // 修改表头循环:仅遍历前4列 for (var j = 0; j < 4; j++) { tableHead = tableHead + '\n<th>' + header[j] + '</th>'; } tableHead = tableHead + '\n</tr>\n</thead>'; var tableBody = '\n<tbody>'; for (var k = 0; k < userData.length; k++) { tableBody = tableBody + '\n<tr>'; // 修改内容循环:仅遍历前4列 for (var l = 0; l < 4; l++) { tableBody = tableBody + '\n<td>' + userData[k][l] + '</td>'; } tableBody = tableBody + '\n</tr>\n'; } var tableEnd = '</tbody>\n</table>'; var tableHtml = tableStart + tableHead + tableBody + tableEnd; return tableHtml; } else { return '<table class="table"><tbody><tr><td>No data found.</td></tr></tbody></table>'; } }
详细说明
- 表头循环调整:将
j < header.length改为j < 4,确保仅生成前4个表头单元格 - 内容循环调整:将
l < userData[0].length改为l < 4,保证每行仅输出前4个数据单元格 - 可选数据截取:使用
values[i].slice(0,4)在收集用户数据阶段就只保留前4列,避免存储多余列数据,提升代码运行效率
内容的提问来源于stack exchange,提问作者John Spartan
相关产品推荐
相关产品推荐

