function saveData(){ var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var formSheet = spreadsheet.getSheetByName("Receipt"); var dataSheet = spreadsheet.getSheetByName("Historical Sales") var fieldRange = \["B12:X"\] var fieldValue = fieldRange.map(f =\> formSheet.getRange(f).getValue()) //console.log(fieldValue) dataSheet.appendRow(fieldValue) }; function exp5() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('W12').activate(); var currentCell = spreadsheet.getCurrentCell(); spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate(); currentCell.activateAsCurrentCell(); currentCell = spreadsheet.getCurrentCell(); spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.PREVIOUS).activate(); currentCell.activateAsCurrentCell(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Historical Receipts'), true); spreadsheet.getRange('X963').activate(); spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).activate(); spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.UP).activate(); spreadsheet.getRange('A14:V23').activate(); spreadsheet.getRange('Receipt!B12:W21').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); };Así es como lo haría:
//Not tested, but it can give you a direction function moveData () { var formSheet = spreadsheet.getSheetByName("Receipt"); var formRng = formSheet.getRange(); //Specify the data range here var formData = formRng.getValues(); var dataSheet = spreadsheet.getSheetByName("Historical Sales"); //It gets the first empty row in column A and "pastes" the data set (form Data) . datasheet.getRange(datasheet.getLastRow()+1,1,formData.length,formData[0].length).setValues(formData); }