如何用Google Apps Script提取Google幻灯片文本中的数字并按值着色?
解决方案
你需要用正则表达式匹配文本中所有数字(包括小数),转成可运算的数值后判断范围,再设置对应颜色。以下是完整修正后的代码:
var slides = Presentation.getSlides(); // 遍历每一页幻灯片 slides.forEach(slide => { slide.getShapes().forEach(shape => { var text = shape.getText(); Logger.log(text.asString()); // 匹配所有数字(支持整数、小数、正负值) var allNumbers = text.find(/[-+]?\d*\.?\d+/g); // 逐个处理匹配到的数字文本块 allNumbers.forEach(numText => { // 将文本转为可运算的数值 var num = parseFloat(numText.asString()); // 根据数值范围设置对应颜色 if (num === 10) { numText.getTextStyle().setForegroundColor("#FFD700"); } else if (num >= 9 && num <= 9.75) { numText.getTextStyle().setForegroundColor("#00FF00"); } else if (num >= 0 && num <= 3.75) { numText.getTextStyle().setForegroundColor("#FF0000"); } }); }); });
关键细节说明:
- 正则表达式
/[-+]?\d*\.?\d+/g:能匹配所有常见数字格式,包括正负数、整数和带小数点的小数。 parseFloat():把匹配到的文本数字转换成浮点数值,这样就能参与大小比较运算。- 合并逻辑:不再单独定义三个变量存储不同范围的数字,直接遍历所有数字做判断,简化代码结构。
补充提示:
- 原代码遗漏了幻灯片的遍历循环,补上后才能处理所有页面的形状。
- 如果数字前后带有单位(比如"9.5分"),需要调整正则或额外处理,确保只提取纯数字部分再转数值。
内容的提问来源于stack exchange,提问作者Dingus Man
相关产品推荐
相关产品推荐

