You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:15:33