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

能否用Google App Scripts创建多用户数据隔离的Web App?

多用户隔离的Google表格数据可视化Web仪表板实现方案

一、基础架构选型

  • 后端用轻量框架:比如Node.js + Express,或者Python + Flask,负责处理登录校验、权限判断和Google表格数据的中转。
  • 前端选灵活方案:React/Vue或者纯HTML+JS均可,重点实现登录页和可视化仪表板,图表用Chart.js、ECharts这类成熟库。
  • 数据库存用户信息:小用户量用SQLite,量大就上PostgreSQL,核心存储账号、密码哈希(绝对不能存明文)、用户对应的Google表格权限范围。

二、用户认证与权限配置

  1. 数据库表设计
    创建users表,核心字段:
  • id:用户唯一标识
  • username:登录账号
  • password_hash:密码的bcrypt哈希值
  • sheet_permission:比如存储允许访问的工作表名(如"User_Alice"),或者同一工作表内的过滤条件(如"user_id=1")
  1. 登录流程
  • 用户在前端提交账号密码,后端查询数据库匹配账号,用bcrypt验证密码哈希是否正确。
  • 验证通过后生成JWT(JSON Web Token),返回给前端存在localStorage或HttpOnly Cookie里。
  • 后续前端所有数据请求都要在请求头带上JWT,后端先校验token有效性,再提取用户权限信息。

三、Google表格数据隔离与对接

  1. 前期准备
    启用Google Sheets API,创建服务账号并下载密钥JSON文件,给服务账号分配目标表格的查看权限(确保服务账号能读取表格数据)。

  2. 数据隔离逻辑

  • 表格数据拆分方式二选一:
    ① 给每个用户单独建一个工作表,命名和用户权限字段对应(如"User_Bob")。
    ② 在同一个工作表里新增user_id列,每条数据标记所属用户ID。
  • 后端数据请求流程:
    收到前端带JWT的请求后,解析出用户的sheet_permission:
    • 如果是单独工作表,直接调用Google Sheets API请求对应工作表的数据:GET https://sheets.googleapis.com/v4/spreadsheets/{表格ID}/values/{工作表名}
    • 如果是同一工作表的过滤数据,先调用API拿到全量数据,再在后端根据user_id过滤出该用户的数据(禁止让前端拿到全量数据)。

注意:所有Google Sheets API请求必须由后端发起,绝对不能让前端直接调用,防止泄露服务账号凭证和越权访问数据。

四、前端可视化实现

  • 登录页:做简单的表单,提交后处理JWT存储,自动跳转仪表板。如果没有有效token,访问仪表板时强制跳转到登录页。
  • 仪表板页:
    1. 页面加载时,携带JWT请求后端的/api/get-user-data接口,获取该用户权限内的数据。
    2. 拿到结构化数据后,用ECharts或Chart.js渲染折线图、柱状图、表格等可视化组件。
    3. 可添加刷新按钮,重新请求数据更新可视化内容。

五、安全关键细节

  • 密码必须用bcrypt或Argon2做哈希存储,禁止明文。
  • JWT设置短过期时间(比如1小时),同时开启HTTPS,防止token被窃听。
  • 服务账号密钥存在后端环境变量里,绝对不能硬编码到代码或提交到版本库。
  • 后端要做双重权限校验:即使前端篡改请求参数,后端也要重新核对用户是否有权限访问对应数据区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:48:36