无法将对象传递到客户端并更新侧边栏用户名问题求助
问题分析与修复方案
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
相关产品推荐
相关产品推荐

