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

Google Sheets脚本误删需保留公式的A列,求修复方案

问题分析与修正脚本

问题根源

  1. A列公式被误删:原脚本中pedidosSheet.deleteRows(2, lastRow - 1)会删除第2行及以下的所有行,包括A列的行,直接清空了表头下方A列的公式。
  2. Excel导出方式错误:用getValues()生成的文件并非标准Excel格式,可能导致附件无法正常解析。
  3. 冗余代码干扰:导出阶段修改表头的代码完全没必要,还会破坏原表结构。

修正后的完整脚本

function sendExcelAndDeleteRows() {
  var spreadsheetId = "####"; // 替换为你的表格ID
  var emailAddress = "###"; // 替换为收件邮箱
  var subject = "Excel Sheet - Pedidos";
  var message = "Please find attached the Excel sheet for Pedidos.";

  // 导出Pedidos表为标准Excel文件
  var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  var pedidosSheet = spreadsheet.getSheetByName("Pedidos");
  var dateToday = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd");
  var pedidosFileName = "Pedidos_" + dateToday + ".xlsx";

  // 通过Google Sheets导出URL获取标准Excel文件
  var exportUrl = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export?exportFormat=xlsx&gid=" + pedidosSheet.getSheetId();
  var authToken = ScriptApp.getOAuthToken();
  var exportResponse = UrlFetchApp.fetch(exportUrl, {
    headers: { 'Authorization': 'Bearer ' + authToken }
  });
  var pedidosFile = DriveApp.createFile(pedidosFileName, exportResponse.getBlob(), MimeType.MICROSOFT_EXCEL);

  // 发送邮件
  MailApp.sendEmail(emailAddress, subject, message, { attachments: [pedidosFile] });

  // 清理Test表:删除表头下方所有行
  var testSheet = spreadsheet.getSheetByName("Test");
  if (testSheet.getLastRow() > 1) {
    testSheet.deleteRows(2, testSheet.getLastRow() - 1);
  }

  // 清理Pedidos表:仅删除A列以外的列,保留A列所有单元格的公式
  var lastColumn = pedidosSheet.getLastColumn();
  if (lastColumn > 1) {
    pedidosSheet.deleteColumns(2, lastColumn - 1);
  }

  // 删除临时文件
  pedidosFile.setTrashed(true);
}

function createTrigger() {
  ScriptApp.newTrigger('sendExcelAndDeleteRows')
    .timeBased()
    .onWeekDay(ScriptApp.WeekDay.TUESDAY, ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY, ScriptApp.WeekDay.FRIDAY)
    .atHour(20)
    .nearMinute(30)
    .create();
}

关键修改说明

  • 移除行删除操作:删掉了pedidosSheet.deleteRows(2, lastRow - 1),确保A列所有行的公式完整保留。
  • 修复Excel导出逻辑:改用Google官方导出URL生成标准Excel文件,保证附件格式正确。
  • 删除冗余代码:移除了导出阶段修改表头的无效代码,避免破坏原表结构。
  • 增加边界判断:为Test表的行删除操作增加了getLastRow() > 1的判断,防止空表时报错。

内容的提问来源于stack exchange,提问作者bbaik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:40:55