Google Apps Script添加工单描述至邮件失败求助
问题解决:添加工单描述到邮件并修复发送失败问题
核心问题原因
- 未定义变量触发脚本中断:当处理第1条表单提交(
LastRow=2)时,原代码未给LastAutoNumber赋值,邮件内容里的(LastAutoNumber+1)会直接报错,终止脚本运行,导致邮件无法发送。 - 字符串语法错误:原代码中邮件内容使用了实际换行,JavaScript不允许普通字符串直接跨多行,这会引发语法错误。
- 变量作用域错误:你添加的
Description变量如果放在错误位置,可能无法正确读取对应单元格的值。
修正后的完整脚本
function addAutoNumber() { var sheet = SpreadsheetApp.getActive().getSheetByName("Form responses 1"); var LastRow = sheet.getLastRow(); var AutoNumberStart = 100; //---- 首次运行初始化 ------------ if (sheet.getRange(1, 1).getValue() == "Timestamp") { sheet.insertColumnBefore(1); sheet.getRange(1, 1).setValue("Job Number"); sheet.getRange("A2:A").setNumberFormat(0); if (LastRow > 1) { for(var ii=2; ii <= LastRow; ii++) { sheet.getRange(ii, 1).setValue(AutoNumberStart); AutoNumberStart++; } } } // ---- 为新提交添加工单号 ---------- if (sheet.getRange(LastRow, 1).isBlank()) { var currentJobNumber; if (LastRow == 2) { currentJobNumber = AutoNumberStart; sheet.getRange(LastRow, 1).setValue(currentJobNumber); } else { var LastAutoNumber = sheet.getRange(LastRow-1, 1).getValue(); currentJobNumber = LastAutoNumber + 1; sheet.getRange(LastRow, 1).setValue(currentJobNumber); } // 获取工单描述(确认列号6是否对应「Describe the Issue」,顺序有变则调整数字) var Description = sheet.getRange(LastRow, 6).getValue(); // 获取收件人邮箱 var EmailAddress = sheet.getRange(LastRow, 3).getValue(); var Subject = "Your Job Number"; // 修复字符串换行,加入工单描述 var Message = `Your job has been logged.\n\n` + `Issue Description:\n${Description}\n\n` + `If you need to send more photos, please reply to this email with the photos attached.\n\n` + `Your job number is: ${currentJobNumber}\n\n` + `Thank you!`; MailApp.sendEmail(EmailAddress, Subject, Message); } }
关键修改说明
- 统一工单号变量:新增
currentJobNumber变量,覆盖首次提交和后续提交场景,彻底避免未定义变量的错误。 - 正确放置描述变量:将
Description定义在获取邮箱之后、构建邮件内容之前,确保读取的是当前提交行的描述内容(注意核对列号6是否对应表单的「Describe the Issue」字段)。 - 修复字符串语法:使用模板字符串(反引号
`)结合\n转义符处理换行,消除语法错误。 - 脚本稳定性优化:所有变量提前定义或在分支中赋值,确保脚本不会因变量未定义而中断。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

