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

JS将字符串转多维数组插入Google Doc表格,doGet传参失效如何解决

问题原因

  1. 传参逻辑错误:doGet/doPost调用ManageSheet时仅传入了事件对象e,函数参数接收逻辑不匹配,没有正确拿到表格数据。
  2. 数据解析逻辑错误:硬编码版本中strArr是包含3个行字符串的数组,而你用var strArr = [ e.parameter.table1here ]时,相当于把传过来的完整表格字符串当成了数组的唯一元素,解析后得到的结构不符合insertTable要求的二维数组格式,所以无法生成表格。
  3. 转义符丢失问题:HTTP请求传参过程中,双引号前的转义符\会被自动解码,会导致JSON.parse执行时报格式错误。

解决方案

第一步:调整App Inventor传参逻辑

将表格数组先转成标准JSON字符串后再作为table1here参数传递,避免转义错误。

第二步:修改Google Apps Script代码

function doGet(e) {
  return ManageSheet(e);
}
function doPost(e) {
  return ManageSheet(e);
}

function ManageSheet(e){
  var docTemplateId = "my google doc template here";
  var someName = "SomeNameFile";
  var copiedFile = DriveApp.getFileById(docTemplateId).makeCopy(someName);
  var docOpen = DriveApp.getFilesByName('SomeNameFile').next().getId();
  var doc = DocumentApp.openById(docOpen);
  var body=doc.getBody();
  var rgel=body.findText('TABLE1HERE');
  var element=rgel.getElement();
  var childIndex=body.getChildIndex(element.getParent());

  // 修正后的解析逻辑
  const tableRawStr = e.parameter.table1here;
  // 先解析得到行字符串数组
  const strArr = JSON.parse(tableRawStr);
  // 转成二维数组
  const result = strArr.map(row => JSON.parse(`[${row}]`));

  body.replaceText('{branch_name}',"Some Thing");
  body.replaceText('{borrower_name}',"Some more Thing");
  body.getChild(childIndex).asText().setText('');
  body.insertTable(childIndex,result);

  return ContentService.createTextOutput("Success");
}

调试建议

如果还是解析失败,可以在代码中添加Logger.log(tableRawStr),运行后在Google Apps Script后台查看日志,确认传过来的字符串实际格式,调整对应的解析规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:00