如何修改Google Apps Script导出JSON后自动清空Sheets数据行
实现方法
对原有脚本做两处极小改动即可实现需求,完全兼容原有导出逻辑,不会破坏现有功能。
1. 新增数据清空工具函数
将以下代码粘贴到原有脚本的任意空白位置(推荐放在脚本末尾):
// 清空工作表冻结表头以下的所有数据行 function clearDataRowsBelowHeader_(sheet) { const headerRowCount = sheet.getFrozenRows(); const lastRow = sheet.getLastRow(); if (lastRow <= headerRowCount) return; sheet.getRange(headerRowCount + 1, 1, lastRow - headerRowCount, sheet.getMaxColumns()).clearContent(); }
2. 替换原有两个导出函数
找到脚本中原有的exportSheet、exportAllSheets函数,替换为以下版本:
function exportAllSheets(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheets = ss.getSheets(); var sheetsData = {}; for (var i = 0; i < sheets.length; i++) { var sheet = sheets[i]; var rowsData = getRowsData_(sheet, getExportOptions(e)); var sheetName = sheet.getName(); sheetsData[sheetName] = rowsData; } var json = makeJSON_(sheetsData, getExportOptions(e)); displayText_(json); // 导出完成后清空所有表的已处理数据 for (var i = 0; i < sheets.length; i++) { clearDataRowsBelowHeader_(sheets[i]); } } function exportSheet(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var rowsData = getRowsData_(sheet, getExportOptions(e)); var json = makeJSON_(rowsData, getExportOptions(e)); displayText_(json); // 导出完成后清空当前表的已处理数据 clearDataRowsBelowHeader_(sheet); }
说明
- 清空逻辑和原有脚本保持一致,以冻结行作为表头边界,请确保表单关联表格的表头行已设置冻结,避免误删表头
- 清空操作在JSON生成完成、导出结果弹窗展示后才会执行,导出过程报错时不会触发清空,不会造成数据丢失
- 单表导出仅清空当前激活工作表的已处理数据,全表导出会清空所有工作表的已处理数据
- 后续如果需要恢复导出全量历史数据的逻辑,仅需删除两个导出函数中调用
clearDataRowsBelowHeader_的代码行即可,无需改动其他部分
内容的提问来源于stack exchange,提问作者Xander Yushchak
相关产品推荐
相关产品推荐

