Estoy familiarizado con Excel VBA pero soy nuevo en Google Script Editing
Estoy tratando de usar una declaración IF simple para insertar una nueva línea sobre la línea 2 si las celdas A2 y B2 NO están en blanco.
function AddaLine() { if (B1 == false) var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('2:2').activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('A2').activate(); };donde la celda B1 contiene
=isblank(A2:B2)o
function AddaLine() { if (A2, B2 != null) var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('2:2').activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('A2').activate(); };Cada combinación que se me ocurre devuelve errores. Cualquier ayuda sería apreciada.
Creo que su objetivo es el siguiente.
I am trying to use a simple IF statement to insert a new line above line 2 if cells A2 & B2 are NOT Blank. , desea insertar una nueva fila en la fila 2 cuando las celdas "A2" y "B2" no están vacías.En este caso, ¿qué tal la siguiente modificación?
function AddaLine() { var spreadsheet = SpreadsheetApp.getActive(); var [a2, b2] = spreadsheet.getActiveSheet().getRange("A2:B2").getDisplayValues()[0]; if (a2 != "" && b2 != "") { spreadsheet.getRange('2:2').activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.getRange('A2').activate(); } }O, por ejemplo, como un simple script, ¿qué tal la siguiente modificación?
function AddaLine() { var sheet = SpreadsheetApp.getActiveSheet(); var [a2, b2] = sheet.getRange("A2:B2").getDisplayValues()[0]; if (a2 != "" && b2 != "") { sheet.insertRowBefore(2); } }Como información adicional al aconsejar del comentario de Rubén , en su script, utiliza el siguiente script.
if (A2, B2 != null) var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('2:2').activate(); En este caso, cuando la condición es true , solo la línea de var spreadsheet = SpreadsheetApp.getActive(); se ejecuta Cuando desee utilizar el siguiente script if (A2, B2 != null) , por favor, inclúyalos entre {} . Árbitro
Más bien con fines educativos. Si desea verificar todos los elementos de una matriz, puede usar el método every() :
function AddaLine() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getRange("A2:B2").getDisplayValues().flat(); if (data.every(x => x != '')) sheet.insertRowBefore(2); } Alternativamente, en su caso, puede usar some() para verificar si algunos de los elementos están vacíos:
function AddaLine() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getRange("A2:B2").getDisplayValues().flat(); if (data.some(x => x == '')) return; // do nothing if there is an empty cell sheet.insertRowBefore(2); } Probablemente somme() sea un poco más eficiente ya que no necesita verificar todos los elementos de la matriz.