Tengo un informe masivo de Google Sheet que contiene muchas métricas. Mucha gente en mi empresa tiene acceso a este informe y todos quieren ver diferentes métricas.
Por lo tanto, estoy tratando de crear un botón en la parte superior del informe que oculte/muestre las columnas según la persona que esté examinando el informe.
function onOpen(){ const ui = SpreadsheetApp.getUi(); ui.createMenu('Column Creation') .addItem('Add Column', 'insertColumn') .addToUi(); ui.createMenu('View 👀') .addItem('Patrick View', 'HideColumns') .addItem('Karen View', 'HideColumns') .addItem('Umesh View', 'HideColumns') .addItem('Unhide everything', 'HideColumns') .addToUi(); function insertColumn() var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('KW'); [...] //this is another function to insert a column
Sé que necesito usar sheet.hideColumns(1) y sheet.showColumns (2), pero no estoy seguro de cómo agregar todo esto. ¿Debo crear diferentes variables para cada vista? También en este momento, mi código está ejecutando ambas acciones al mismo tiempo (creación de columnas + ocultar/mostrar columnas) ¿cómo puedo separar esto?
Para resumir quiero:
Espero que mis explicaciones no sean demasiado complicadas, ¡gracias de antemano por cualquier ayuda!
Probar
var sh = SpreadsheetApp.getActiveSheet() function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('Column Creation') .addItem('Add Column', 'insertColumn') .addToUi(); ui.createMenu('View 👀') .addItem('Patrick View', 'hideColumnsP') .addItem('Karen View', 'hideColumnsK') .addItem('Unhide everything', 'showColumns') .addToUi(); } function showColumns() { sh.unhideColumn(sh.getRange(1, 1, 1, sh.getLastColumn())) } function hideColumnsP(){ showColumns() sh.hideColumns(1,2) } function hideColumnsK(){ showColumns() sh.hideColumns(4,3) }
¡Tenga en cuenta que solo una persona estará activa a la vez!
Una vez que un usuario muestra una columna oculta, esta columna también dejará de estar oculta para todos los demás espectadores (después de un tiempo de propagación de unos segundos).
Una solución sería que cada usuario tuviera su hoja de cálculo personal que importe los datos de interés de la hoja de cálculo maestra a través de ImportRange . Eso sería óptimo para ver. Sin embargo, si los usuarios también deben modificar los datos, las cosas se complicarán más, ya que los datos modificados deben sincronizarse con la hoja de cálculo maestra y pueden surgir conflictos si varios usuarios modifican los datos simultáneamente en sus hojas de cálculo locales.