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

Google Sheets:单元格文本格式数字超300万欧元时自动发邮件问题

解决Google Sheets带格式文本数字转数值并触发邮件提醒的问题

核心思路

要处理这些带欧元符号、千分位分隔符的文本,最可靠的方式是用正则提取数字相关内容,再统一格式转换为JavaScript可识别的数值,具体逻辑:

  • 先移除文本里的非数字/非分隔符(比如€、空格)
  • 替换千分位的.为空,把小数点的,替换为.,得到标准数字字符串
  • 转换为数值类型后再做大小判断

修改后的完整代码

function FetchValue() {
  // 注意:原代码取D2:D整列,getValue()只会返回第一个单元格值,这里直接指定D2更精准
  var CurrentValueRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Quelle_Datawrapper").getRange("D2"); 
  var CurrentValueText = CurrentValueRange.getValue().toString();
  
  // 文本转数值处理
  // 第一步:移除所有非数字、非点、非逗号的字符
  var cleanedText = CurrentValueText.replace(/[^0-9.,]/g, '');
  // 第二步:替换千分位的点,把逗号换成小数点
  var numericStr = cleanedText.replace(/\./g, '').replace(/,/g, '.');
  var CurrentValue = parseFloat(numericStr);

  // 检查数值是否超过300万,同时过滤非数值情况
  if (!isNaN(CurrentValue) && CurrentValue > 3000000) {
    // 获取邮箱地址,原代码用getValues()返回二维数组,改用getValue()直接拿字符串
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt3").getRange("B1");
    var emailAddress = emailRange.getValue();
    
    // 发送邮件,把数值转回德语区欧元格式,显示更友好
    var message = 'In Kürze steht ein Objekt zum Preis von ' + CurrentValue.toLocaleString('de-DE', {style: 'currency', currency: 'EUR'}) + ' zur Versteigerung.'; 
    var subject = 'Zwangsversteigerung - Objekt für mehr als drei Millionen Euro';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

关键修改点说明

  • 单元格范围修正:原代码取整列D2:D,getValue()仅返回第一个单元格值,直接指定D2更符合需求
  • 文本转数值逻辑:两次正则替换兼容你列出的所有格式(带/不带千分位、带/不带空格的欧元符号)
  • 邮箱获取优化:改用getValue()直接获取字符串,无需额外toString()转换
  • 错误防护:加入!isNaN(CurrentValue),避免单元格为空或格式错误时触发代码报错
  • 邮件内容优化:用toLocaleString把数值转回德语区的欧元格式,邮件显示更规范

扩展:监控整列单元格

如果需要监控D2:D整列的所有单元格,可以循环遍历处理:

function FetchAllValues() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Quelle_Datawrapper");
  // 仅取有内容的行,避免遍历空单元格
  var range = sheet.getRange("D2:D" + sheet.getLastRow());
  var values = range.getValues();
  
  var emailAddress = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tabellenblatt3").getRange("B1").getValue();
  
  values.forEach(function(row) {
    var text = row[0].toString();
    var cleanedText = text.replace(/[^0-9.,]/g, '');
    var numericStr = cleanedText.replace(/\./g, '').replace(/,/g, '.');
    var value = parseFloat(numericStr);
    
    if (!isNaN(value) && value > 3000000) {
      var message = 'In Kürze steht ein Objekt zum Preis von ' + value.toLocaleString('de-DE', {style: 'currency', currency: 'EUR'}) + ' zur Versteigerung.'; 
      var subject = 'Zwangsversteigerung - Objekt für mehr als drei Millionen Euro';
      MailApp.sendEmail(emailAddress, subject, message);
    }
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:05:31