Google Sheets中实现表格内容逐行发送至邮件的技术求助
解决Google Sheets脚本邮件正文添加多行数据的问题
修改后的完整代码
function sendEmail() { // 获取当前表格的DueToday工作表 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DueToday"); // 读取D1单元格的计数 const todaydue = sheet.getRange("D1").getValue(); if (todaydue > 0) { // 获取A3:D区域的所有数据 const dataRange = sheet.getRange("A3:D"); const allRows = dataRange.getValues(); // 过滤掉空行(所有列都为空的行),并格式化每行内容 const formattedRows = allRows .filter(row => row.some(cell => cell.toString().trim() !== "")) // 筛选非空行 .map((row, index) => { // 行号从1开始计数(对应A3为第一行数据) const rowNumber = index + 1; // 将行内单元格内容用 | 分隔,空单元格显示为空字符串 const rowContent = row.map(cell => cell.toString().trim()).join(" | "); return `Row ${rowNumber} | ${rowContent}`; }); // 拼接邮件正文 const emailAddress = 'mymail@gmail.com'; const subject = `JRFgo² Reminder: ${todaydue} due today`; const message = formattedRows.join("\n"); // 每行单独换行显示 // 发送邮件 GmailApp.sendEmail(emailAddress, subject, message); } }
关键修改说明
- 范围调整:将原代码中单个单元格的范围
B3:B3替换为A3:D,一次性获取目标区域的所有数据 - 空行过滤:通过
filter方法筛选出至少包含一个非空单元格的行,避免空行混入邮件内容 - 行格式化:用
map遍历每行数据,自动生成行号并将单元格内容按「Row X | 内容1 | 内容2 | ...」的格式拼接 - 正文拼接:将所有格式化后的行用换行符
\n连接,确保邮件内每行单独显示
额外修正
原代码中var message = '‣ '+result+ ;存在语法错误(多余的加号),修改后的代码直接使用格式化后的行数组拼接正文,彻底解决了这个问题。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

