Google Apps Script中appendRow()插入数据显示[Ljava.lang.Object;@xxx问题
问题分析与解决
问题出在doGet函数的参数获取逻辑上:Google Apps Script中e.parameters返回的每个参数都是数组类型(哪怕请求里仅传递了一个对应参数值)。比如p.ID实际是["xxx"]这样的数组,而非单个字符串或数字。当你把这些数组直接放进appendRow的参数数组时,Sheets会将数组对象转为默认的字符串表示,也就是你看到的[Ljava.lang.Object;@xxxx格式。
而setValue(username)能正常执行,是因为setValue方法会自动处理数组参数,默认取数组的第一个元素完成赋值。
修复后的代码
function doGet(e){ var p = e.parameters; try { if ("username" in p) { // user info get // 取每个参数数组的第一个元素,转为单个值 let id = p.ID[0]; let username = p.username[0]; let time = p.time[0]; let email = p.email[0]; let roles = p.roles[0]; let value = [id,username,time,email,roles]; userSheet.appendRow(value); userSheet.getRange("F38").setValue(username) return ContentService.createTextOutput(username); } } catch (e){ return ContentService.createTextOutput("Error: " + e.message); } }
修改后,每个变量都是单个值,传入appendRow即可正常插入符合预期的数据。
内容的提问来源于stack exchange,提问作者shenkwen
相关产品推荐
相关产品推荐

