Creé un formulario de entrada de datos en las hojas de Google, ahora tengo problemas para guardar dicha entrada en una hoja externa hasta ahora esto es lo que tengo, no sé si estoy usando el método correcto para hacer referencia a la hoja.
por favor mira los comentarios, gracias
Cada vez que intento enviar el formulario, aparece lastRow Null
function submitData() { //variable declaration for referenceing the active google sheet var myGoogleSheet = SpreadsheetApp.getActiveSpreadsheet(); var shUserForm = myGoogleSheet.getSheetByName('MasterSheet'); //open external sheet var extSS = SpreadsheetApp.openById("1U9SmfPCH9v8maqh6XL0dmRL85TJZfckUV7SAEGM3pQo"); var datasheet= extSS.getSheetByName("Mastersheet"); var srcData = shUserForm.getDataRange().getValues(); //to create the instance of the ui environment to use the alert features var ui = SpreadsheetApp.getUi(); var response = ui.alert("Submit", "Do you want to submit the data?", ui.ButtonSet.YES_NO); //checking the user response if ( response == ui.NO) { return; // to ext from this function } if ( validateEntry()== true) { var blankRow =datasheet.getLastRow() + 1; //identify the next blank row //'code to update the database sheet ( write data entry to DB sheet) datasheet.getRange(blankRow,1).setValue(srcData.getRange("C7").getValue()); //input number datasheet.getRange(blankRow,2).setValue(srcData.getRange("C9").getValue()); //Department datasheet.getRange(blankRow,3).setValue(srcData.getRange("C11").getValue()); //Agent Name datasheet.getRange(blankRow,4).setValue(srcData.getRange("C13").getValue()); //Hub location datasheet.getRange(blankRow,9).setValue(srcData.getRange("C15").getValue()); //order ID datasheet.getRange(blankRow,10).setValue(srcData.getRange("C20").getValue()); //type of entry datasheet.getRange(blankRow,5).setValue(Session.getActiveUser().getEmail()); //Submitted By, this will automatically get user email datasheet.getRange(blankRow,7).setValue(new Date()).setNumberFormat('yyyy-mm-dd h:mm:'); datasheet.getRange(blankRow,8).setValue(new Date()).setNumberFormat('yyyy-mm-dd h:mm:'); datasheet.getRange(blankRow,6).setValue(srcData.getRange("C17").getValue()); //comments ui.alert(' "New Data Saved - Input #' + shUserForm.getRange("C7").getValue() + '"'); shUserForm.getRange("C7").clear(); shUserForm.getRange("C9").clear(); shUserForm.getRange("C11").clear(); shUserForm.getRange("C13").clear(); shUserForm.getRange("C15").clear(); shUserForm.getRange("C17").clear(); } }Para guardar datos en otra hoja de cálculo, primero debe abrirla usando openById("insert sheet id here") o openByUrl("insert sheet URL here") . Esto devolverá una clase de hoja de cálculo que tiene el getSheetByName("sheet name") que puede usar para acceder a la hoja.
El ID de la hoja de cálculo se puede encontrar en la URL. Esto se puede encontrar después de /d/ o antes de /edit
Identificación de ejemplo:
https://docs.google.com/spreadsheets/d/12345/edit#gid=012345 es el ID de la hoja de cálculo
Código:
function saveData() { //open current sheet var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName("Sheet1"); //open external sheet var extSS = SpreadsheetApp.openById("Insert External Spreadsheet ID here"); var extSH = extSS.getSheetByName("Sheet1 External"); //get data from current Sheet. var srcData = sh.getDataRange().getValues(); //write to external sheet extSH.getRange(extSH.getLastRow()+1, 1, srcData.length, srcData[0].length).setValues(srcData); }Este script pegará los valores de Sheet1 a Sheet2
Antes:
Datos de la hoja 1:
Hoja2 Datos:
Después:
Datos de la hoja 1:
Hoja2 Datos: