Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement Google工作表中的事务处理-将值从、移动到_If Statement_Google Apps Script_Google Sheets - Fatal编程技术网

If statement Google工作表中的事务处理-将值从、移动到

If statement Google工作表中的事务处理-将值从、移动到,if-statement,google-apps-script,google-sheets,If Statement,Google Apps Script,Google Sheets,我正试图在google sheet上制作一个文档来管理我的财务,实际上,我希望能够跟踪我的账户之间的交易。 我努力使自己能够总结事情 实际上,我可以告诉文档我正在进行一项从-到(在这种情况下,从内容1到内容3)的事务,并添加一个新的值。 我不知道如何告诉GoogleSheet将25从Content1“移动”到Content3或任何其他内容 感谢您提供的宝贵帮助。您可以使用应用程序脚本触发器触发事务,并使用复选框跟踪应触发的事务,以便在选中相应复选框时进行事务 首先,通过选择适当的单元格将复选框

我正试图在google sheet上制作一个文档来管理我的财务,实际上,我希望能够跟踪我的账户之间的交易。 我努力使自己能够总结事情

实际上,我可以告诉文档我正在进行一项从-
(在这种情况下,从内容1到内容3)的事务,并添加一个新的
。 我不知道如何告诉GoogleSheet将25从Content1“移动”到Content3或任何其他内容


感谢您提供的宝贵帮助。

您可以使用应用程序脚本触发器触发事务,并使用复选框跟踪应触发的事务,以便在选中相应复选框时进行事务

  • 首先,通过选择适当的单元格将复选框添加到事务行中,然后单击
    Insert>Checkbox

  • 然后,通过选择
    Tools>scripteditor
    打开绑定到电子表格的脚本,复制以下函数,然后保存项目。现在,每次选中复选框时,相应的交易都会发生在
    B2:E3
    中,如果未选中,则交易会撤消(从
    交换位置,而钱会以相反的方式进行):

此函数将在每次编辑电子表格时启动,但您只希望在编辑的单元格为复选框且选中此复选框时更新事务摘要。该函数正在使用通过(
e
)传递给
onEdit
函数的信息进行检查,其中包含有关编辑单元格的信息(其值、范围等):

参考:

如果我理解正确,您可能希望触发从第9行开始的事务,此触发器将相应地更新值
B3:E3
。是这样吗?在这种情况下,您可以在应用程序脚本中创建一个
onEdit
触发器,并在每个事务旁边添加一个复选框,这样当选中复选框时,事务就完成了,并且
B3:E3
得到更新。这样合适吗?如果是这样的话,我会考虑发表一个答案,解释一下这一点。更准确地说,我想检测它来自哪个
内容
,并从该内容中减去它,然后将其移动到目的地。因此,在示例表中,我想将25从
content1
移动到
content3
。但是,如果我将
from
列中的
content 1
更改为
content 2
,它将正确调整。在
B3:E3
行中。此外,这应该是一个扩展列表,因此如果我在
B9
之后添加另一行,它可以重复该操作。非常感谢。嗨,我贴了一个答案和一个可能的解决方案。如果您需要更多的提示,请告诉我:)最后一个问题,当我选中该框时,它将完成事务,但是当我取消选中该框时,是否可以撤消该操作?另外,我想将内容1、2、3&for更改为我的帐户名,当我阅读代码时,您使一系列内容成为可能(我说的对吗?)是否可能有“当前帐户”和“贝宝”等值?非常感谢。@pual不客气。当复选框未选中时,可以撤消操作,但这需要一些代码修改。如果时间允许,我会做的。关于你的第二个问题,是的,你的内容可以有其他名称,只要这些名称在单独的交易和交易摘要中都匹配。非常感谢。你说得对,我在我的问题后开始重命名这些,所以我可以自己检查。@pual我更新了答案中的代码,因此取消选中复选框将取消交易,我希望这对你有用!
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);    
    }
  }
}