求Google Sheets脚本:发送低于指定百分比行的汇总邮件
Google Apps Script 汇总符合条件行并发送邮件脚本
以下脚本会遍历指定工作表,筛选出G列数值低于设定百分比阈值的行,将这些行的日期、城市及对应百分比汇总后发送邮件。
完整脚本代码
function sendLowPercentageSummary() { // 配置参数,根据需求修改 const SPREADSHEET_ID = '1abdggD73Zb0XmRoFaMx0ssULjtLLTHhFQV3ikbaEK_I'; // 目标表格ID const SHEET_NAME = 'Sheet1'; // 目标工作表名称 const THRESHOLD = 0.8; // 阈值,例:0.8代表低于80% const RECIPIENT_EMAIL = 'your-email@example.com'; // 收件人邮箱 const EMAIL_SUBJECT = '低于阈值的百分比汇总报告'; // 获取表格数据 const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID); const sheet = spreadsheet.getSheetByName(SHEET_NAME); const data = sheet.getDataRange().getValues(); // 跳过表头,筛选符合条件的行 const header = data[0]; const filteredRows = data.slice(1).filter(row => { const percentage = row[6]; // G列为第7列,索引从0开始为6 return typeof percentage === 'number' && percentage < THRESHOLD; }); // 构建HTML格式邮件内容 let emailBody = `<p>以下是G列数值低于${THRESHOLD*100}%的记录汇总:</p>`; emailBody += '<table border="1" cellpadding="5" cellspacing="0">'; // 添加表头 emailBody += `<tr><th>${header[0]}</th><th>${header[1]}</th><th>${header[6]}</th></tr>`; // 添加筛选后的行数据 filteredRows.forEach(row => { const date = row[0]; // A列日期 const city = row[1]; // B列城市 const percentage = (row[6] * 100).toFixed(2) + '%'; // 格式化百分比显示 emailBody += `<tr><td>${date}</td><td>${city}</td><td>${percentage}</td></tr>`; }); emailBody += '</table>'; // 无符合条件行时调整邮件内容 if (filteredRows.length === 0) { emailBody = `<p>当前没有G列数值低于${THRESHOLD*100}%的记录。</p>`; } // 发送邮件 MailApp.sendEmail({ to: RECIPIENT_EMAIL, subject: EMAIL_SUBJECT, htmlBody: emailBody }); }
使用步骤
- 打开目标Google表格,点击顶部菜单栏的「扩展程序」>「Apps Script」。
- 删除编辑器中的默认代码,粘贴上述完整脚本。
- 修改脚本开头的配置参数:
SPREADSHEET_ID:替换为你的表格ID(示例ID已默认填入,可直接使用或替换)SHEET_NAME:填写目标工作表的名称THRESHOLD:设置需要的百分比阈值(小数形式,如0.75代表75%)RECIPIENT_EMAIL:填写接收汇总邮件的邮箱地址
- 点击工具栏的「运行」按钮,首次运行需完成权限授权,按提示操作即可。
- 如需定时自动运行:点击左侧菜单栏的「触发器」>「添加触发器」,选择触发条件(如每天固定时间运行)。
注意事项
- 确保G列数据为数字格式,若为带百分号的文本格式(如"75%"),需先转换为数值(如0.75),否则脚本无法正确识别。
- 阈值需设置为小数,例如筛选低于85%的行,就设置
THRESHOLD = 0.85。 - 邮件采用HTML格式,会以表格形式展示数据,排版更清晰。
内容的提问来源于stack exchange,提问作者Juan Zamora
相关产品推荐
相关产品推荐

