如何为Google Apps Script温度记录代码添加超8℃邮件发送功能
实现逻辑
你只需要在temperature的case分支内增加数值转换、阈值判断、邮件发送三个环节的代码即可,修改后完整代码如下:
完整修改后代码
function doGet(e) { Logger.log( JSON.stringify(e) ); var result = 'Ok'; if (e.parameter == 'undefined') { result = 'No Parameters'; } else { var sheet_id = '1hKXZEIx160TwXi5yUztGBDijNaGgAOjKWSmY-Mowo9M'; // Spreadsheet ID var sheetActive = SpreadsheetApp.openById(sheet_id); var sheet = sheetActive.getSheetByName("Theatre"); var newRow = sheet.getLastRow() + 1; var rowData = []; var Curr_Date = new Date(); rowData[0] = Curr_Date; // Date in column A var Curr_Time = Utilities.formatDate(Curr_Date, "Africa/Nairobi", 'HH:mm:ss'); rowData[1] = Curr_Time; // Time in column B for (var param in e.parameter) { Logger.log('In for loop, param=' + param); var value = stripQuotes(e.parameter[param]); Logger.log(param + ':' + e.parameter[param]); switch (param) { case 'temperature': rowData[2] = value; // Temperature in column C result = 'Temperature Written on column C'; // --- 新增温度告警逻辑开始 --- // 将字符串类型的温度转为数值 const temperatureNum = Number(value); // 替换为你的实际收件邮箱地址 const receiveEmail = "your-alert-email@example.com"; // 先判断格式合法再做阈值判断,避免非数值内容报错 if (!isNaN(temperatureNum) && temperatureNum > 8) { const mailTitle = `温度告警:当前温度${temperatureNum}℃ 超过阈值`; const mailContent = ` 上报时间:${Utilities.formatDate(Curr_Date, "Africa/Nairobi", 'yyyy-MM-dd HH:mm:ss')} 上报温度:${temperatureNum}℃ 已超出预设阈值8℃,请及时核查处理。 `; // 调用内置方法发送邮件 GmailApp.sendEmail(receiveEmail, mailTitle, mailContent); result += ",温度超出阈值,告警邮件已发送"; } // --- 新增温度告警逻辑结束 --- break; // case 'humidity': // rowData[3] = value; // Humidity in column D // result += ' ,Humidity Written on column D'; // break; default: result = "unsupported parameter"; } } Logger.log(JSON.stringify(rowData)); var newRange = sheet.getRange(newRow, 1, 1, rowData.length); newRange.setValues([rowData]); } return ContentService.createTextOutput(result); } function stripQuotes( value ) { return value.replace(/^["']|['"]$/g, ""); }
注意事项
- 第一次部署运行前可以先手动执行一次代码,触发权限申请,同意脚本访问表格、发送邮件的权限,否则邮件发送会失败
- 如果不想短时间内重复收到大量告警邮件,可以额外加个时间间隔判断,比如将上次发信时间存在表格的固定单元格里,两次发信间隔至少10分钟才再次发送
- 部署为Web App时,执行身份选择你自己的谷歌账号,访问权限按需设置即可
内容的提问来源于stack exchange,提问作者MutwiriJosh
相关产品推荐
相关产品推荐

