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

无法将对象传递到客户端并更新侧边栏用户名问题求助

问题分析与修复方案

1. 核心问题:修改<span>内容的方法错误

<span>是普通文本元素,没有.value属性——.value仅适用于<input>、<textarea>这类表单输入控件。要修改<span>的文本内容,需使用以下两种方法:

  • innerText:保留文本格式,仅操作可见文本
  • textContent:操作所有文本内容(包括隐藏文本)

修正后的前端JS代码:

document.addEventListener('DOMContentLoaded', function() {
  google.script.run.withSuccessHandler(updateUsrInfo).getPersonalData();
}); // 补充原代码缺失的闭合括号

function updateUsrInfo(data) {
  document.getElementById("name").innerText = data.name;
  // 也可使用:document.getElementById("name").textContent = data.name;
}

2. Google Apps Script 循环逻辑错误

getPersonalData函数中,return user被写在forEach的回调函数内部,会导致循环仅执行一次迭代就直接返回,无法遍历所有行匹配用户数据。需将return user移至forEach循环外部,确保遍历完成后再返回结果。

同时需补充定义url变量(原代码中url未定义),修正后的code.gs代码:

function getPersonalData() {
  const url = "你的Google表格实际URL"; // 替换为真实表格URL
  let ss = SpreadsheetApp.openByUrl(url);
  let ws = ss.getSheetByName("sheet");
  let data = ws.getDataRange().getValues();
  let user = {};
  
  data.forEach(function(r) {
    if (r[0] === Session.getEffectiveUser().getEmail()) {
      user.email = r[0];
      user.name = r[1];
      user.ssn = r[2];
      user.city = r[3];
    }
  });
  
  return user; // 移至forEach循环外部
}

3. 额外语法修正

你定义personalData对象时用分号分隔属性,属于语法错误,需改为逗号:

// 错误写法
let personalData = {
    name: "";
    ssn: "";
    city: "";
}

// 正确写法
let personalData = {
    name: "",
    ssn: "",
    city: ""
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:40:43