No estoy seguro de cómo titular mejor esto, así que me disculparé de antemano. Estoy tratando de determinar si algo que espero hacer es posible, porque hasta ahora no veo cómo, pero si es así, me gustaría aprender. Tengo una secuencia de comandos bastante simple a continuación, pero en este momento, tal como está escrito, todo lo que hace es mirar la hoja 2 y si se marca una casilla de verificación en D10, marca la casilla de verificación en la hoja 3 en D10. Esto es perfecto y funciona como se esperaba. También lo tengo configurado para que si desmarco la casilla de verificación en D10 en la hoja 2, desmarca la casilla de verificación en D10 en la hoja 3.
La lógica que espero ver si puedo incorporarla es que si ahora desmarco D10 en la hoja 3, desmarcará D10 en la hoja 2 . Lo intenté de diferentes maneras agregando el reverso de lo que tengo aquí, pero no importa lo que haga, solo vuelve a marcar la casilla en la hoja 3 tan pronto como la desmarco, y la casilla en la hoja 2 nunca cambia.
function onEdit(e) { var sh = SpreadsheetApp.getActiveSpreadsheet(); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); var sheet3 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet3'); if (sheet2.getRange('D10').isChecked()== true){ sheet3.getRange('D10').check(); } else if (sheet2.getRange('D10').isChecked()== false){ sheet3.getRange('D10').uncheck(); } {}}El anterior era mi código original, pero luego probé algo como el siguiente y obtuve el mismo resultado. ¿Alguna idea o consejo?
function onEdit(e) { var sh = SpreadsheetApp.getActiveSpreadsheet(); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2'); var sheet3 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet3'); if (sheet2.getRange('D10').isChecked()== true){ sheet3.getRange('D10').check(); } if (sheet3.getRange('D10').isChecked()== false){ sheet2.getRange('D10').uncheck(); } else if (sheet2.getRange('D10').isChecked()== false){ sheet3.getRange('D10').uncheck(); } {}}Creo que su objetivo es el siguiente.
En su secuencia de comandos, por ejemplo, en la etapa inicial, cuando ya se ha marcado "D10" de "hoja2", "D10" de "hoja3" se marca incluso cuando "D10" de "hoja3" no está marcado. Pensé que esta podría ser la razón de su problema. En este caso, ¿qué tal el siguiente script de muestra?
function onEdit(e) { const {range, source} = e; const sheetName = range.getSheet().getSheetName(); const obj = {"sheet2": "sheet3", "sheet3": "sheet2"}; if (range.getA1Notation() == "D10" && obj[sheetName]) { source.getSheetByName(obj[sheetName]).getRange("D10")[range.isChecked() ? "check" : "uncheck"](); } }onEdit .const obj = {"sheet2": "sheet3", "sheet3": "sheet2"}; .getA1Notation() para verificar la coordenada de la celda. Cuando desee lograr esto usando el objeto de evento, también puede modificar range.getA1Notation() == "D10" a range.columnStart == 4 && range.rowStart == 10 .