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

HTML表单提交至Google Sheet:实现跳过空行写入数据

解决Google Apps Script写入表单数据到空白行后的问题

你的问题出在两个地方:表头获取代码错误,以及**getLastRow()会包含有格式或曾编辑过的空白行**,导致写入位置异常。以下是修正后的完整代码:

const sheetName = 'datapokokbaru'
const scriptProp = PropertiesService.getScriptProperties()

function initialSetup () {
  const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  scriptProp.setProperty('key', activeSpreadsheet.getId())
}

function doPost (e) {
  const lock = LockService.getScriptLock()
  lock.tryLock(10000)

  try {
    const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
    const sheet = doc.getSheetByName(sheetName)

    // 修复:正确获取第一行的表头(替换原错误的filter代码)
    const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
    
    // 关键:找到第一列最后一个非空行(适配你的arrayformula唯一编号列)
    const lastNonEmptyRows = sheet.getRange('A:A').getValues().flat().filter(cell => cell.toString().trim() !== "")
    const nextRow = lastNonEmptyRows.length + 1

    const newRow = headers.map(function(header) {
      return header === 'timestamp' ? new Date() : e.parameter[header]
    })

    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
      .setMimeType(ContentService.MimeType.JSON)
  }

  catch (e) {
    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
      .setMimeType(ContentService.MimeType.JSON)
  }

  finally {
    lock.releaseLock()
  }
}

关键修改说明:

  1. 修复表头获取:原代码中sheet.filter(...)是错误的——sheet是Sheet对象,不是数组,无法直接使用filter方法。改用getRange获取第一行的所有表头列,这才是正确的方式。
  2. 精准定位最后非空行:
    • 我们通过获取A列(你的唯一编号列)的所有值,过滤掉空单元格,得到非空行的数量。
    • 因为表头在第1行,所以lastNonEmptyRows.length就是最后一个有内容的行号,加1就是新数据要写入的行位置。
    • 这种方式不受表格中空白格式行的影响,能准确找到真正的最后数据行。

如果你的唯一编号不在A列,只需把代码中的'A:A'替换为对应列的范围(比如'B:B')即可。

内容的提问来源于stack exchange,提问作者Abdurrasyiid Alaik Sander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:37:09