如果已经提出这个问题,请提前致歉。随着 Mint 的关闭并迫使我们转向 Credit Karma,我希望在 Google Sheets 中构建一个半自动化的预算和支出跟踪器,并且希望有人能帮助我弄清楚如何制定 forEach 循环脚本。
我想要循环的范围中有四列:月份、费用、金额、类别。我找到了一个循环遍历范围的脚本(如下)。我需要帮助的是生成一个 if 语句,该语句将识别每行中的值,并且如果满足条件,则将每个满足条件的“金额”列中的值相加。
理想情况下,RETURN VALUES HERE 行将执行以下操作:“如果一行的“月份”列中有“四月”,“类别”列中有“杂货”,则将该行的“金额”单元格添加到总和中。”希望这是有道理的。我是脚本编写新手,非常感谢我能得到的任何帮助。
function logAprilGroceries() {
var range = SpreadsheetApp.getActive().getRangeByName("Statements");
var values = range.getValues();
values.forEach(function(row) {
row.forEach(function(col) {
RETURN VALUES HERE;
});
});
}
https://developers.google.com/apps-script/guides/sheets 上的建议,您应该了解 Google Apps 脚本使用 JavaScript 作为编程语言,并且在使用表格时处理 arrays 非常常见.
我认为你不需要内循环(row.forEach(function(col){...}
);相反,请使用数组索引,即
row[0]
表示第一列,
row[1]
表示第二列,依此类推。关于
if 语句,语法为 if(expression){...}
,其中表达式可能使用比较运算符,即
===
(等于)、
!==
(不等于)。有很多资源可以学习 JavaScript 基础知识。我喜欢 FreeCodeCamp 的 JavaScript 课程,因为它是免费的,并且专注于“普通 JavaScript”,没有 API、HTML 以及 Google Apps Script 服务器端脚本中未使用的其他内容。
function totalByMonthAndCategory(month, category) {
const range = SpreadsheetApp.getActive().getRangeByName("Statements");
const values = range.getValues();
let sum = 0;
for (let i = 0; i < values.length; i++) {
let cols = values[i];
if ((cols[0] == month) && (cols[2] == category)) {
sum += cols[3];
}
}
return sum;
}