Google Sheets读取下拉菜单选中邮箱调用MailApp发邮件失败
问题根因
- 下拉菜单的数据验证规则完全不影响
getValue()的取值结果,你之前注释的把C15值写入J37的测试代码放开执行就能验证:C15的邮箱值可以被正常读取,故障和下拉菜单本身无关。 - 你之前测试C14普通单元格的邮箱能收到抄送,只是因为刚好把
mail变量赋值给了合法的cc配置项,C15、C16的邮箱发送失败核心是MailApp.sendEmail()的参数写法错误:sendEmail的配置对象仅识别官方规定的字段名,你写的cc:mail, ccA, ccB属于无效写法,ccA、ccB是自定义变量,根本不是合法的配置参数,所以C15、C16读出来的邮箱地址压根没有被传入抄送人字段。cc字段仅支持两种传值格式:逗号分隔的邮箱字符串,或者由多个邮箱字符串组成的一维数组,你把单个邮箱包成独立数组的写法完全多余。
修正后可运行代码
function sendEmail() { const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Porudžbenica') const kupac = sh.getRange('C5').getValue(); const mail = sh.getRange('C14').getValue(); const cc1 = sh.getRange("C15").getValue(); const cc2 = sh.getRange("C16").getValue(); // 拼接所有抄送邮箱,自动过滤空单元格避免报错 const ccRecipients = [mail, cc1, cc2] .filter(email => typeof email === 'string' && email.trim() !== '') .join(','); MailApp.sendEmail({ to: 'example@email.com', cc: ccRecipients, subject: 'Porudžbina ' + kupac, htmlBody: testTableHTML() }) };
排查验证方法
如果仍然怀疑下拉单元格取值异常,可以在取值逻辑后加一行console.log(sh.getRange("C15").getValue()),执行后在Apps Script的执行日志里就能看到C15的实际读取值,和普通单元格的读取结果没有任何区别。
内容的提问来源于stack exchange,提问作者Nexpreet
相关产品推荐
相关产品推荐

