[英]Google Docs Script: Move cell to two other sheets onEdit but no duplicates
[英]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.