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

实现Google表格数据同步更新HTML表格并高亮新增行

解决方案

一、核心修改方向

  • 定期调用Google Apps Script接口拉取最新数据,避免整页刷新
  • 缓存历史数据行数,对比识别新增行并添加红色背景样式
  • 修复原代码中DataTable初始化、定时器调用的错误用法

二、修改后的Code.gs

仅新增返回数据行数,方便前端对比判断新增行:

function getData1(){
  var spreadSheetId = ""; // 填入你的Google表格ID
  var dataRange     = "Data!A2:N"; // 数据范围
 
  var range   = Sheets.Spreadsheets.Values.get(spreadSheetId,dataRange);
  var values  = range.values || []; // 处理空数据场景
  return {
    data: values,
    rowCount: values.length // 返回当前数据行数,用于对比
  };
}

三、前端代码修改

1. HTML(统一表格ID)

原代码存在表格ID混用(datatable/data-table),需统一为data-table:

<table id="data-table" class="table table-striped table-sm table-hover table-bordered"></table>

2. CSS(新增红色背景样式)

添加专门的新增行样式:

#data-table {
  font-family: Arial, Helvetica, sans-serif;
  border-collapse: collapse;
  color: black;
  width: 100%;
}

#data-table td,
#data-table th {
  border: 1px solid #ddd;
  padding: 8px;
}

#data-table tr:nth-child(even) {
  background-color: #f2f2f2;
}

#data-table tr:hover {
  background-color: #ddd;
}

#data-table th {
  padding-top: 12px;
  padding-bottom: 12px;
  text-align: center;
  background-color: teal;
  color: white;
}

/* 新增行红色背景 */
#data-table tr.new-row {
  background-color: #ffcccc !important;
}

3. JavaScript(实现自动刷新与新增行标记)

修复定时器逻辑,新增数据对比与样式添加逻辑:

// 缓存历史数据行数和表格实例
let previousRowCount = 0;
let dataTableInstance = null;

// 初始化表格
function initTable(data) {
  dataTableInstance = $('#data-table').DataTable({
    data: data.data,
    columns: [
      {"title":"Task"},
      {"title":"Pending"},
      {"title":"Completed"},
      {"title":"Link",
        "render": function(data, type, row, meta){
          if(type === 'display' && data){
            data = `<a href="${data}" target="_blank">${data}</a>`;
          }
          return data || '';
        }
      }
    ],
    destroy: true // 允许重复初始化表格
  });
  previousRowCount = data.rowCount;
}

// 刷新数据并标记新增行
function refreshData() {
  google.script.run.withSuccessHandler(function(newData) {
    const hasNewRows = newData.rowCount > previousRowCount;
    
    // 更新表格数据
    dataTableInstance.clear();
    dataTableInstance.rows.add(newData.data);
    dataTableInstance.draw();
    
    // 为新增行添加红色背景
    if(hasNewRows) {
      const newRowStartIndex = previousRowCount;
      $('#data-table tbody tr').slice(newRowStartIndex).addClass('new-row');
      previousRowCount = newData.rowCount;
    }
  }).getData1();
}

// 页面加载完成后初始化,每10秒刷新一次
$(document).ready(function(){
  google.script.run.withSuccessHandler(initTable).getData1();
  setInterval(refreshData, 10000); // 可调整刷新间隔(单位:毫秒)
});

四、关键说明

  • 刷新间隔:setInterval(refreshData, 10000)表示每10秒拉取一次数据,可根据需求修改时间
  • 新增行识别:通过对比前后数据的行数差,精准定位新增行并添加样式
  • 兼容性:添加空数据判断,避免表格渲染出错;使用destroy: true解决重复初始化问题

内容的提问来源于stack exchange,提问作者John Emmanuel Dela Cruz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:38:13