簡體   English   中英

如何在編輯時將行移動到其他工作表並在單元格上打印時間戳?

[英]How can I move rows to other sheets onEdit and print a Time Stamp on a cell?

我是Java腳本的初學者,我正在嘗試做一個糟糕的Montly財務報表以通過cel電話進行操作。 呵呵

我為該過程的第一部分構建了一個模板,您可以在此處找到:

https://docs.google.com/spreadsheets/d/1QbM78R7wYqKMwQOHJ6BA4M389c6dLZICRi75khqswO4/edit?usp=sharing

我的Google表格中有兩個表格:

1-輸入

2-費用

我想在IN上輸入OK時從INPUT復制行並粘貼到EXPENSES中。

我已經在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-當它從INPUT復制行並將其粘貼到EXPENSES中時,應始終在EXPENSES的最后一行下方創建一個新行,並且應隨模板一起在INPUT中始終保留一個空行以及格式和數據驗證框。 現在,這不是腳本在做什么。 將數據移到費用表時,它會從輸入中刪除原始行,並創建一個沒有格式和數據驗證框的空白新行。

2-如果腳本從INPUT復制時相同的對應單元格為空,我希望腳本在EXPENSES的D列(日期)中添加一個時間戳。 換句話說,如果我不輸入費用的日期,則從輸入變為費用后,它將添加復制行的當天的日期。

有人可以幫我嗎?

非常感謝您閱讀本文。 :)

試試看-我確信還有更好的方法-但我認為它確實起作用...

 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 cellD2 = SpreadsheetApp.getActive().getRange('D2'); if (cellD2.getValue() == 0 || cellD2.getValue() == "") { cellD2.setValue(new Date()) } 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); } setValidation(); } function setValidation() { // Set the data validation for cell A2 to require a number greater than 0. var cellA2 = SpreadsheetApp.getActive().getRange('A2'); var rule2 = SpreadsheetApp.newDataValidation().setAllowInvalid(false).requireNumberGreaterThan(0).build(); cellA2.setDataValidation(rule2); var cellB2 = SpreadsheetApp.getActive().getRange('B2'); var ruleB2 = SpreadsheetApp.newDataValidation().requireValueInList(['Pharmacy', 'Rent','Supermarket'], false).build(); cellB2.setDataValidation(ruleB2); var cellC2 = SpreadsheetApp.getActive().getRange('C2'); var ruleC2 = SpreadsheetApp.newDataValidation().setAllowInvalid(false).requireNumberGreaterThan(0).build(); cellC2.setDataValidation(ruleC2); var cellD2 = SpreadsheetApp.getActive().getRange('D2'); var ruleD2 = SpreadsheetApp.newDataValidation().requireDate().build(); cellD2.setDataValidation(ruleD2); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM