google-apps-script - Google 表格 - 根据背景颜色添加特定值
问题描述
我尝试过制作 Google Apps 脚本,但在尝试了解如何设置它时遇到了麻烦。由此看来,我可以创建一个可以在电子表格本身内部调用的函数,就像 Google Sheets 提供的 SUM 函数一样。我已经查看了该getBackground()
函数,但似乎它需要包含一些全局变量而不仅仅是函数。
我想输入一个函数,它在 A2:A1000 范围内,并根据单元格的背景颜色,确定它是进入“工作”还是“生活”,然后将其添加到单元格 E4(总工作)或F4(总寿命)相应。A 列中的单元格将始终是数字。
这是我尝试过的,我想我可能完全基于我的单细胞方法而偏离了道路:
function workTime(input) {
if (input.getBackground() == "#d9ead3") {
input.setFontColor(4285f4)
} else {
input.setFontColor(null)
}
}
//I get errors on line 3 for some reason though...
TL;DR 基于单元格的背景颜色,我如何创建一个函数来计算这些特定颜色的数字总和,并相应地将它们显示在“总工作时间”和“总生命周期”下的不同单元格中?
解决方案
“自定义公式”方法非常有限
您将进入自定义公式的唯一输入是values,而不是 cell 对象。运行公式的函数永远不会知道它的位置或格式。它接收一个值或一个值数组,并返回一个值或值数组。
Apps 脚本版本
function workTime2() {
let file = SpreadsheetApp.getActive();
let sheet = file.getSheetByName("Sheet1");
let range = sheet.getRange('A1:A16');
let targetColor = "#00ffff"
let values = range.getValues(); // [[1],[2],[3]...]
let colors = range.getBackgrounds(); // [[#ffffff],[#00ffff],[#ffffff]...]
let sum = 0
for (let i = 1; i != values.length; i++){ // starting at 1 to skip first row
let value = values[i][0]
let color = colors[i][0]
if (color == targetColor) {
sum += value
}
}
let resultCell = sheet.getRange('B2');
resultCell.setValue(sum);
}
此脚本将对 A1:A16 中的值求和(如果它们是绿松石色)。将总和放入 B2。
这是一种基于单元格值获取总和的方法。这应该为您提供了一个很好的起点,可以根据自己的喜好进行定制。
参考
推荐阅读
- enums - 用于与枚举进行切换或模式匹配的宏
- java - 在java中使用ECC加密图像
- javascript - React Router Link 未呈现为可点击按钮
- python-3.x - 在数据库中插入空行
- memory-leaks - Leaks 在分配 UILabel 时显示泄漏,[NSNotificationCenter addObserver] 似乎是“UIAccessibilityButtonShapesChangedNotification”
- javascript - 如何从字符串开头以外的位置找到 Javascript 中字符串中子字符串的索引?
- url - How to set the ~/ path in Asp.net core
- apache - apache2:错误:模块未正确启用
- forms - 类别下拉列表获取的内容更多,然后 laravel 5 中的标题不起作用
- python - 使用制表和新行生成格式良好的 Flask 表单输出