问题描述
我正在尝试制作一个文档来管理我在Google表格上的财务状况,实际上,我希望能够跟踪我在两个帐户之间进行的交易。 我做了this sheet以便能够总结一下。
实际上,我可以告诉文档我正在进行交易from
-to
(在这种情况下,从内容1到内容3)并添加新的{{1 }}。
我不知道如何告诉Google表格将25从内容1“移动”到内容3或任何其他内容。
感谢您的宝贵帮助。
解决方法
您可以使用Apps脚本onEdit触发器来触发交易,并使用复选框跟踪应触发的交易,以便在选中相应复选框时进行交易。
-
首先,通过选择适当的单元格将复选框添加到交易行中,然后单击
const handleInputPaste = ev => { //alert("hi"); makeCode(); } inputs.forEach(input => { input.addEventListener('paste',handleInputPaste) })
。 -
然后,通过选择
Insert > Checkbox
打开绑定到电子表格的脚本,复制以下函数,然后保存项目。现在每一个复选框被选中时,相应的交易发生在Tools > Script editor
,当它没有被选中的交易获得撤消(在B2:E3
和from
交流的地方,资金去向另一种方式):
to
此功能将在每次编辑电子表格时触发,但是您只想在已编辑的单元格为复选框且选中此复选框时更新交易摘要。该函数正在使用通过event object(function onEdit(e) {
var range = e.range;
var col = range.getColumn();
var row = range.getRow();
var checkbox = e.value;
var sheet = range.getSheet();
if (col === 6 && row > 8) {
var from = sheet.getRange(row,3).getValue();
var to = sheet.getRange(row,4).getValue();
var value = sheet.getRange(row,5). getValue();
var valuesToUpdate = sheet.getRange("B2:E2").getValues();
var fromIndex = valuesToUpdate[0].findIndex(contents => contents === from);
var toIndex = valuesToUpdate[0].findIndex(contents => contents === to);
var fromRange = sheet.getRange(3,fromIndex + 2);
var toRange = sheet.getRange(3,toIndex + 2);
if (checkbox === "TRUE") { // MAKE TRANSACTION
fromRange.setValue(fromRange.getValue() - value);
toRange.setValue(toRange.getValue() + value);
} else if (checkbox === "FALSE") { // UNDO TRANSACTION
fromRange.setValue(fromRange.getValue() + value);
toRange.setValue(toRange.getValue() - value);
}
}
}
)传递给onEdit
函数的信息进行检查,该信息包含有关已编辑单元格的信息(其值,其范围等)。 ):