entonces quiero escribir una función que tome clientes potenciales de una hoja de origen y luego los envíe a otra hoja (la hoja de destino) si aún no se han enviado. La diferencia entre un cliente potencial que se ha enviado y un cliente potencial que no se ha enviado es que un cliente potencial enviado debe tener "sí" en la columna K (columna 10)
Logré que la primera parte funcionara (enviar clientes potenciales de una hoja a otra) pero, por alguna razón, no puedo hacer que el script agregue "sí" cuando se envía un cliente potencial a la otra hoja. Como puede ver a continuación, he intentado agregar "values[i][tstCol] = "yes";" en varios lugares diferentes, pero no funciona. ¿Alguna idea de lo que estoy haciendo mal? ¡Gracias!
function newLeads() { var sourceSheet = SpreadsheetApp.openById('ID').getSheetByName('SHEETNAME'); var destSheet = SpreadsheetApp.openById('ID').getSheetByName('SHEETNAME'); var values = sourceSheet.getDataRange().getDisplayValues(); var finalValues=[]; var columns = String("0,1,2,3,4,5,6,7,8").split(','); //only want these columns var tstCol = 10; for (var i=0;i<values.length;i++) { var newValues=[]; //values[i][tstCol] = "yes"; if (values[i][tstCol] != "yes") { //values[i][tstCol] = "yes"; for (var j=0;j<columns.length;j++) { //values[i][tstCol] = "yes"; newValues.push(values[i][columns[j]]); } finalValues.push(newValues); } } destSheet.getRange(destSheet.getLastRow() + 1, 1, finalValues.length, finalValues[0].length).setValues(finalValues); }Mira esto.
function newLeads() { try { var sourceSheet = SpreadsheetApp.openById('ID').getSheetByName('SHEETNAME'); var destSheet = SpreadsheetApp.openById('ID').getSheetByName('SHEETNAME'); var values = sourceSheet.getDataRange().getDisplayValues(); var finalValues=[]; var columns = String("0,1,2,3,4,5,6,7,8").split(','); //only want these columns var tstCol = 10; for (var i=0;i<values.length;i++) { var newValues=[]; if (values[i][tstCol] != "yes") { values[i][tstCol] = "yes"; // is this where you want to set to yes for (var j=0;j<columns.length;j++) { newValues.push(values[i][columns[j]]); } finalValues.push(newValues); } values[i] = [values[i][tstCol]]; // this would extract column tstCol } destSheet.getRange(destSheet.getLastRow() + 1, 1, finalValues.length, finalValues[0].length).setValues(finalValues); sourceSheet.getRange(1,tstCol+1,values.length,1).setValues(values); } catch(err) { console.log(err); } }Explicación:
El bloque try se usa para ver si ocurre un error durante el bloque entre try y catch ; si ocurre un error, se ejecuta el bloque catch(err) y se muestra el error.
La matriz de values es una matriz de filas [[1,2,3,4],[5,6,7,8],...] que convertí en una matriz [[1],[2],[ 3]...] de una sola columna del tipo hoja de cálculo para utilizar el setValues(values) .
Link de referencia: