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

如何修复谷歌文档与表格合并代码第4行的非法字符错误?

修复Google Apps Script邮件合并代码中的“非法字符”及其他错误

我帮你排查了代码里的问题,主要是中文标点符号和一些小的语法/拼写错误导致的“非法字符”报错,具体修复方案和修正后的代码如下:

核心错误原因及修复点

  • 非法字符根源:代码里多处使用了中文单引号(‘’),而Google Apps Script只识别英文单引号(''),比如第4行的‘NONE’、后续的'DB7’、‘v’等,这些中文标点会被判定为非法字符。
  • 变量拼写错误:你创建的文档对象是message,但后续错误地写成了vestule,这会导致“未定义变量”的报错。
  • 语法缺失:else str += ‘miss’语句末尾缺少分号,这会打断JavaScript的执行逻辑。

修正后的完整代码

function mailMerge() { 
  var db, doc; 
  var files = DriveApp.getFilesByName('NONE'); 
  if (files.hasNext()) db = files.next(); 
  else return; 
  files = DriveApp.getFilesByName('DB7'); 
  if (files.hasNext()) doc = files.next(); 
  else return; 
  
  var ss = SpreadsheetApp.openById(db.getId()); 
  var template = DocumentApp.openById(doc.getId()); 
  var messageBody = DocumentApp.create('message').getBody(); // 重命名变量更清晰
  var templateParagraphs = template.getBody().getParagraphs(); 
  var sheetValues = ss.getSheets()[0].getDataRange().getValues(); 
  
  var i, j, str; 
  for (i=1; i<sheetValues.length; i++) { 
    str = sheetValues[i][0] + ' '; 
    if (sheetValues[i][1] == 'v') {
      str += 'mister';
    } else {
      str += 'miss';
    } // 补充分号并格式化代码结构
    
    var p; 
    for (j=0; j<templateParagraphs.length; j++) { 
      p = templateParagraphs[j].copy(); 
      messageBody.appendParagraph(p); 
    } 
    messageBody.replaceText('{name}', str); 
    messageBody.appendPageBreak(); 
  } 
}

额外优化说明

我还对变量名做了重命名(比如par改成templateParagraphs,val改成sheetValues),让代码逻辑更易读,你可以根据自己的习惯调整。另外运行前请确认:

  1. Google Drive中确实存在名为NONE的电子表格和DB7的文档
  2. 电子表格的第一行是表头,从第二行开始是数据
  3. 文档模板里包含{name}这个占位符用于替换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:15:00