Estoy tratando de guardar los comentarios diarios que recibo de un sitio web de la hoja de "comentarios" en otra hoja de Google que llamé "Base de datos de comentarios"
Columna A: la fecha Columna B: hora Columna C: la dirección de correo electrónico Columna D: los comentarios
Las filas de datos comienzan desde la fila 3.
Lo que estoy haciendo actualmente para guardar los datos en función del conocimiento básico que tengo es:
Tengo otra función que cuenta el número de filas y ejecuta la función saveFeedback_Data() según el número de filas.
Sé que lo que estoy haciendo en el paso 3 no es una forma adecuada, realmente agradecería si me recomendaran una mejor manera de realizar esta función con un comentario para poder entender.
Aprecio tu ayuda,
function saveFeedback_Data() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('feedback'), true); var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var Date= sheet.getRange('feedback !A3').getValue(); var Time = sheet.getRange('feedback !B3').getValue(); var Email = sheet.getRange('feedback !C3').getValue(); var Feedback = sheet.getRange('feedback !D3').getValue(); var sheet_dest = ss.getSheetByName("Database"); sheet_dest.appendRow([Date,Time, Email,Feedback]); Logger.log('Issue Date : ' + Date + ' Issue time : ' + Time + ' Email Address : ' + Email + ' Feedback : ' + Feedback + '\n'); //now deleting the row spreadsheet.setActiveSheet(spreadsheet.getSheetByName('feedback'), true); spreadsheet.getRange('3:3').activate(); spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows()); spreadsheet.getRange('A10').activate();}
Esto se ejecutará unas diez veces más rápido
function saveFeedback_Data() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Feedback'); const shsr = 3; const dbsh = ss.getSheetByName('Database'); const rg = sh.getRange(shsr, 1, sh.getLastRow() - shsr + 1, 4); const vs = rg.getValues().filter(r => !r.every(e => !e));//gets all non blank rows at one time dbsh.getRange(dbsh.getLastRow() + 1, 1, vs.length, vs[0].length).setValues(vs);//moves all data at one time rg.clearContent();//clears all data at one time }Puede ir a Google Apps Script Reference y usar el cuadro de búsqueda para encontrar cualquier función que no entienda. Si es una función de JavaScript puro, vaya aquí