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

Google Sheets复选框触发邮件:如何包含整行指定单元格内容?

解决Google Sheets脚本邮件包含整行C-M列内容的问题

你的核心问题出在多单元格范围的获取方式和取值方法上:

  • 之前的范围写法"C:M"+row是错误的,正确的整行C-M范围应该是"C"+row+":M"+row(或者用行列索引更稳妥)
  • 多单元格不能用getValue(),这个方法只会返回范围里第一个单元格的值,要改用getValues()获取所有单元格的二维数组,再转成易读的字符串格式。

修改后的核心代码部分

把原来的var Email_body = ss.getRange("C"+row).getValue();替换成下面两种方式之一:

方式1:用A1符号拼接范围

// 获取当前行C到M列的范围
var bodyRange = ss.getRange("C" + row + ":M" + row);
// 把二维数组转成每行(这里只有一行)用换行分隔的字符串,也可以用"\t"制表符分隔
var Email_body = bodyRange.getValues()[0].join("\n");

方式2:用行列索引(更推荐,避免A1符号拼接错误)

// row是目标行,3是C列的索引,1是行数,11是列数(M是第13列,13-3+1=11)
var bodyRange = ss.getRange(row, 3, 1, 11);
var Email_body = bodyRange.getValues()[0].join("\n");

完整修改后的脚本

function onEdit(e) {
  var range = e.range;
  var col = range.getColumn();
  var row = e.range.getRow();
  var edited_value = e.value;
  var ss = e.range.getSheet();

  if(col == 35 && edited_value == "TRUE" && ss.getRange("B"+row).getValue() == "") {
    Browser.msgBox("Check if you entered data");
  } else {
    var to = "xxxxxx@live.com";
    var subject = ss.getRange("B"+row).getValue();
    
    // 替换成下面的代码获取C-M列内容
    var bodyRange = ss.getRange(row, 3, 1, 11);
    var Email_body = bodyRange.getValues()[0].join("\n");
    
    MailApp.sendEmail(to, subject, Email_body);
    Browser.msgBox("Email Sent");
  }
}

为什么之前的尝试失败?

  • var Email_body = ss.getRange("C:M"+row).getValue():范围写法错误,实际会变成C:M1这种无效范围,而且用了getValue()只能取第一个单元格
  • var Email_body = ss.getRange[("C"+row)("D"+row)].getValue():语法错误,getRange是方法不是数组,不能用[]访问,而且参数格式完全错误

内容的提问来源于stack exchange,提问作者Andy Steele

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:32:42