Javascript 如何将行移动到其他工作表OneEdit并在单元格上打印时间戳?

Javascript 如何将行移动到其他工作表OneEdit并在单元格上打印时间戳?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我是一个java脚本行乞者,我正试图通过我的cel手机做一个糟糕的财务报表。呵呵 我为流程的第一部分构建了一个模板,您可以在这里找到: 我的谷歌工作表中有两张工作表: 1-输入 2-费用 我想从输入中复制行,并在colunm E上输入OK后立即粘贴费用 我已经在论坛上找到了一个很好的脚本,作者是ScampMichael function onEdit(event) { //Script by ScampMichael https://support.google.com/docs/forum/

我是一个java脚本行乞者,我正试图通过我的cel手机做一个糟糕的财务报表。呵呵

我为流程的第一部分构建了一个模板,您可以在这里找到:

我的谷歌工作表中有两张工作表:

1-输入

2-费用

我想从输入中复制行,并在colunm E上输入OK后立即粘贴费用

我已经在论坛上找到了一个很好的脚本,作者是ScampMichael

function onEdit(event) { //Script by ScampMichael https://support.google.com/docs/forum/AAAABuH1jm0hR40qh02UWE/?hl=en
  // assumes source data in sheet named INPUT
  // target sheet of move to named EXPENSES
  // test column with yes/no is col 5 or E
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "INPUT" && r.getColumn() == 5 && r.getValue() == "OK") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("EXPENSES");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}
就我的目的而言,它工作得很好。但是,我想对其进行定制,并为其添加额外的功能,这些功能包括:

1-当它从输入中复制行并粘贴到费用中时,它应始终在费用中最后一行的下方创建一个新行,并且应始终在输入中保留一个空行,以及此模板附带的格式和数据验证框。现在不是剧本在做什么。当它将数据移动到费用表时,会从输入中删除原始行,并创建一个空白的新行,而不带格式和数据验证框

2-我希望脚本在开支中的D列(日期)中添加一个时间戳,以防从输入复制时相同的对应单元格为空。换句话说,如果我没有输入费用的日期,在它从输入移动到费用之后,它将添加复制行的当天的日期

有人能帮我吗


如果你读到这里,非常感谢。:)

试试看——我相信有更好的方法——但我认为它确实起作用了

函数onEdit(事件){//ScampMichael编写的脚本https://support.google.com/docs/forum/AAAABuH1jm0hR40qh02UWE/?hl=en
//假定工作表中的源数据命名为输入
//转移到指定费用的目标表
//带是/否的测试柱为第5列或E列
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=event.source.getActiveSheet();
var r=event.source.getActiveRange();
如果(s.getName()==“输入”&&r.getColumn()==5&&r.getValue()==“确定”){
var cellD2=SpreadsheetApp.getActive().getRange('D2');
如果(cellD2.getValue()==0 | | cellD2.getValue()==“”){
cellD2.setValue(新日期())
}
var row=r.getRow();
var numColumns=s.getLastColumn();
var targetSheet=ss.getSheetByName(“费用”);
var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);
s、 getRange(行,1,1,numColumns).moveTo(目标);
s、 删除行(row);
}
setValidation();
}
函数setValidation(){
//将单元格A2的数据验证设置为需要大于0的数字。
var cellA2=SpreadsheetApp.getActive().getRange('A2');
var rule2=SpreadsheetApp.newDataValidation().setAllowInvalid(false).requireNumber大于(0).build();
cellA2.setDataValidation(规则2);
var cellB2=SpreadsheetApp.getActive().getRange('B2');
var ruleB2=SpreadsheetApp.newDataValidation().requireRewaminList(['Pharmacy'、'Rent'、'Supermarket'],false)。build();
cellB2.setDataValidation(规则B2);
var cellC2=SpreadsheetApp.getActive().getRange('C2');
var ruleC2=SpreadsheetApp.newDataValidation().setAllowInvalid(false).requireNumber大于(0.build();
cellC2.setDataValidation(规则C2);
var cellD2=SpreadsheetApp.getActive().getRange('D2');
var ruleD2=SpreadsheetApp.newDataValidation().requireDate().build();
cellD2.setDataValidation(规则d2);
}