Actualmente tengo un proyecto en el que tengo que recorrer y verificar 3 valores de celda diferentes. Si los valores contienen #VALOR1, se supone que debe eliminar la columna. No estoy seguro de lo que estoy haciendo mal. Sigo recibiendo un error y la columna nunca se elimina. También recibo un error de bucle que no puedo descifrar.
function scoreToGrade() { var cellsChecked = ['AF2', 'AG2', 'AH2']; var sheet = SpreadsheetApp.getActiveSheet(); for (var i = 0; i < cellsChecked.length; i++) { var value = SpreadsheetApp.getActiveSheet() .getRange(cellsChecked[i]) .getDisplayValues(); console.log(value); if (value == '#VALUE!') { // do something console.log('Not blank ' + value); sheet.deleteColumn(cellsChecked + 1); } else { // do something else console.log('is another value ' + value); } } }el registro es el siguiente
3:41:23 PM Notice Execution started 3:41:23 PM Info [ [ 'TR' ] ] 3:41:23 PM Info is BlankTR 3:41:23 PM Info [ [ 'F' ] ] 3:41:23 PM Info is BlankF 3:41:23 PM Info [ [ '#VALUE!' ] ] 3:41:23 PM Info Not blank #VALUE! 3:41:23 PM Error Exception: Cannot convert 'AF2,AG2,AH21' to int. scoreToGrade @ Code.gs:115Su error parece estar en la línea que está utilizando para eliminar las columnas
sheet.deleteColumn(cellsChecked+1);Está pasando una matriz de celdas a esta función en lugar de la única celda que espera el método. Intente pasar un elemento de matriz específico similar a lo que hizo cuando obtuvo el valor de la celda anteriormente en su secuencia de comandos.
sheet.deleteColumn(cellsChecked[i]);Referencia: https://developers.google.com/apps-script/reference/spreadsheet/sheet#deletecolumncolumnposition
Prueba esto:
function scoreToGrade() { var cellsChecked = ['AF2', 'AG2', 'AH2']; var sheet = SpreadsheetApp.getActiveSheet(); for (var i = 0; i < cellsChecked.length; i++) { var value = sheet.getRange(cellsChecked[i]).getDisplayValue(); console.log(value); if (value == '#VALUE!') { // do something console.log('Not blank ' + value); sheet.deleteColumn(sheet.getRange(cellsChecked[i]).getColumn()); } else { // do something else console.log('is another value ' + value); } } }