如何将HTML表格多行数据保存到Google Sheets

来源:AI大模型作者:上海网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何将HTML表格多行数据保存到Google Sheets》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何将HTML表格多行数据保存到Google Sheets》有用,将其分享出去将是对创作者最好的鼓励。

将HTML表格的多行数据保存到Google Sheets是网页开发中常见的需求,通常可以通过Google Sheets提供的API接口结合前端JavaScript代码实现,整个过程分为配置Google Sheets权限、提取表格数据、调用接口上传三个核心步骤。

如何将HTML表格多行数据保存到Google Sheets

一、配置Google Sheets相关权限

首先需要准备一个Google Sheets表格,并开启API访问权限,具体步骤如下:

  • 打开目标Google Sheets表格,点击右上角的共享按钮,将表格设置为任何人都可以编辑,或者获取特定用户的编辑权限
  • 进入Google Cloud Console,创建一个新项目,启用Google Sheets API
  • 创建API密钥或者OAuth 2.0客户端ID,这里如果是公开提交数据,使用API密钥即可,注意配置API密钥的访问限制,只允许调用Google Sheets API
  • 记录下表格的ID,表格ID在表格链接中可以找到,格式为https://docs.google.com/spreadsheets/d/表格ID/edit

二、提取HTML表格的多行数据

假设页面中有一个如下结构的HTML表格,我们需要提取所有行的数据:

<table id="dataTable">
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
      <th>城市</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>25</td>
      <td>北京</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>30</td>
      <td>上海</td>
    </tr>
  </tbody>
</table>

使用JavaScript提取表格数据的代码如下:

// 获取表格元素
const table = document.getElementById('dataTable');
// 获取表头,用于确定列的顺序
const headers = [];
const headerCells = table.querySelectorAll('thead tr th');
headerCells.forEach(cell => {
  headers.push(cell.textContent.trim());
});

// 获取所有数据行
const rows = table.querySelectorAll('tbody tr');
const tableData = [];
rows.forEach(row => {
  const rowData = [];
  const cells = row.querySelectorAll('td');
  cells.forEach(cell => {
    rowData.push(cell.textContent.trim());
  });
  // 确保行数据和表头列数一致
  if (rowData.length === headers.length) {
    tableData.push(rowData);
  }
});

console.log('提取到的表格数据:', tableData);

三、调用Google Sheets API上传数据

Google Sheets API的写入接口需要按照指定格式传递数据,接口地址为https://sheets.googleapis.com/v4/spreadsheets/表格ID/values/工作表名称!A1:append?valueInputOption=RAW&key=API密钥,其中工作表名称默认是Sheet1,valueInputOption设置为RAW表示按原样写入数据。

上传数据的完整JavaScript代码如下:

// 配置参数,替换为实际的表格ID和API密钥
const SPREADSHEET_ID = '你的表格ID';
const API_KEY = '你的API密钥';
const SHEET_NAME = 'Sheet1'; // 工作表名称
const API_URL = `https://sheets.googleapis.com/v4/spreadsheets/${SPREADSHEET_ID}/values/${SHEET_NAME}!A1:append?valueInputOption=RAW&key=${API_KEY}`;

// 上传数据的函数
async function uploadTableDataToSheets() {
  // 先提取表格数据,复用之前的提取逻辑
  const table = document.getElementById('dataTable');
  const headers = [];
  const headerCells = table.querySelectorAll('thead tr th');
  headerCells.forEach(cell => {
    headers.push(cell.textContent.trim());
  });

  const rows = table.querySelectorAll('tbody tr');
  const tableData = [];
  // 先添加表头到上传数据,如果表格已经有表头可以跳过这一步
  // tableData.push(headers);
  rows.forEach(row => {
    const rowData = [];
    const cells = row.querySelectorAll('td');
    cells.forEach(cell => {
      rowData.push(cell.textContent.trim());
    });
    if (rowData.length === headers.length) {
      tableData.push(rowData);
    }
  });

  // 构造请求参数
  const requestBody = {
    values: tableData
  };

  try {
    const response = await fetch(API_URL, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(requestBody)
    });
    const result = await response.json();
    if (response.ok) {
      alert('数据上传成功,共上传' + tableData.length + '行数据');
      console.log('上传结果:', result);
    } else {
      alert('数据上传失败:' + result.error.message);
      console.error('上传错误:', result);
    }
  } catch (error) {
    alert('请求发送失败,请检查网络或配置');
    console.error('请求错误:', error);
  }
}

// 可以绑定到按钮的点击事件上
// document.getElementById('uploadBtn').addEventListener('click', uploadTableDataToSheets);

四、常见问题说明

  • 如果上传时提示权限错误,需要检查API密钥是否正确,以及Google Sheets表格的共享权限是否开启
  • 如果表格数据包含特殊字符,不需要额外处理,RAW模式下会原样写入
  • 如果需要上传大量数据,建议分批上传,避免单次请求数据量过大导致失败
  • 如果表格的工作表名称不是默认的Sheet1,需要修改代码中的SHEET_NAME参数为实际的工作表名称

HTML_tableGoogle_Sheets_APIJavaScriptFetch_API修改时间:2026-07-07 19:06:26

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。