Script de aplicación de Google: obtener datos de hojas de cálculo sin tener derechos de visualización (disparador no instalable)

El problema es que tengo varias hojas de cálculo (a) para las cuales solo una persona tiene permisos de visualización y edición, aún otras personas necesitan algunos datos de esas hojas de cálculo (a) para sus hojas de cálculo (b), también necesitan poder obtener un versión actualizada de los datos de las hojas de cálculo (a)

Creé ahora una solución utilizando disparadores instalables con una función de edición (tienen que cambiar un campo específico en la hoja de cálculo) para actualizar los datos, pero las personas quieren tener un botón/dibujo en el que puedan hacer clic o una entrada de menú para obtener los datos actualizados de las hojas de cálculo (a).

Desde mi perspectiva, combinar un disparador instalable con un botón/dibujo/entrada de menú es un callejón sin salida. Por lo tanto, mi pregunta es, si existe alguna otra posibilidad de otorgar acceso a los datos de las hojas de cálculo sin otorgar derechos de visualización o edición de los documentos de donde provienen los datos...

Sería genial si alguien tuviera una idea, gracias de antemano.

preguntado el 28 de agosto de 12 a las 14:08

Para aclarar un poco la pregunta (ya que creo que no hay forma de activar un activador instalable desde un botón/entrada de menú): ¿Existe alguna otra posibilidad (aparte del activador instalable) de obtener datos de otra hoja de cálculo para la cual la persona no ¿No tienes permiso de edición o visualización? -

3 Respuestas

Hay algunos límites en los activadores que se utilizan en una hoja de cálculo con la que se va a encontrar. Verificar este para detalles. Esencialmente, y onEdit el disparador no puede acceder/modificar otra hoja de cálculo como They cannot access any services that require authentication as that user.

Para actualizar otra hoja de cálculo fuera de la hoja de cálculo actual, simplemente instalé una función y un elemento de menú para activarla. (¿Es este el callejón sin salida del que hablas?) Depende del usuario actualizar el grupo, pero eso ha sido un beneficio para mis datos seguros, ya que requiere el conocimiento del titular de la clave para permitir que otros accedan a la información. Esto es A a B, que es posible pero B tiene que tener acceso de edición a Ahoja de cálculo.

NO, B no puede obtener información de A a menos que tengan acceso a él, al menos como espectador. No puede otorgar privilegios de visualización a celdas individuales, que es esencialmente lo que desea hacer.

Sin esa capacidad, la solución está más en estructurar el flujo de datos. En un senerio en el que un usuario demostró que no se puede confiar en que actualice el equipo con regularidad, me he creado como 0. tengo permisos para A y B. Ejecuto la función desde 0 acceder A y para actualizar B, que también les envía un correo electrónico, para que todos sepan cuándo se produjo la última actualización. ¿Por qué no uso A hoja de cálculo para ejecutar la función, porque desde 0 Puedo acceder a él y escribirlo a B sin ver nunca los datos. Es un velo de ignorancia. en realidad nunca abro A y 0 permanece vacío.

Lo mejor que pude hacer.

Respondido 28 ago 12, 20:08

un activador onEdit normal no puede acceder a los servicios que requieren autenticación, pero un activador onEdit instalable sí puede. Además, los activadores instalables "se ejecutan como el usuario que instaló el activador, no como el usuario que activa el evento". Por lo tanto, también es posible acceder a datos para los que el usuario de la hoja de cálculo normalmente no tendría permisos. El callejón sin salida es que no he encontrado ninguna forma de activar un disparador instalable a través de un botón o una entrada de menú. La solución con un usuario maestro que inicia el script para obtener los datos de A a B no funciona en mi caso, ya que los datos deben actualizado con demasiada frecuencia - user1630428

Estoy enfrentando un problema similar.

Creo que encontré una solución, pero no hay garantía. usé el importrange función que tengo la intención de controlar a través de script. Probé la función de descarga y descubrí que es un buen disparador para forzar el importrange al trabajo, que añadí a un Menu (por si acaso).

function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var menuEntries = [];
    menuEntries.push({name: "Refresh", functionName: "SheetFlush"});
    ss.addMenu("Menu", menuEntries);
}

function SheetFlush() {
    SpreadsheetApp.flush();
}

Ahora, como no quiero el B usuario para conocer el A Dirección única de SS. (Al mirar hacia el importrange función)

Estoy protegiendo y escondiendo la hoja con el importrange en función de la B SS. Y estoy usando una referencia interna adicional en B SS para la hoja oculta.

Respondido 28 ago 12, 23:08

pero por mucho que entendí la función ImportRange (ver nota) el usuario todavía necesita tener acceso a ss B para poder obtener los datos de B... - user1630428

Por ahora, lo he comprobado en una demostración y no es necesario que comparta un documento de rango de importación. (ver mi nota: productforums.google.com/forum/#!topicsearch/author:me/docs/…). - user1419943

hmm, tal vez estoy haciendo algo diferente, pero obtengo un error #REF si el documento no se comparte. Encontré otra forma de publicar mi servicio como un servicio web, pero con esa solución (sin usar las aplicaciones de Google) parece que no tengo posibilidad de controlar quién puede acceder al script... - user1630428

Podría tener una respuesta para tu anomalía. El cliente de mi aplicación son personas de mi grupo de trabajo de googleapp, no tienen permiso para ver los archivos, pero no son unos completos extraños.

Creo que lo siguiente podría funcionar. Un archivo es el archivo de reunión con el código. El archivo B tiene la función importrange () de A con un permiso para compartir. Y el archivo C tiene importrange () de B con un permiso para compartir del archivo B. el pequeño giro es que el archivo B tiene una hoja vinculada que está oculta y protegida. He comprobado esto y, si no eres el propietario, podrás mostrarlo.

En la práctica, mi relleno es que puedes hacer un truco similar con 2 hojas de cálculo, la tercera es para mayor seguridad.

Respondido el 02 de Septiembre de 12 a las 19:09

eso podría explicarlo, desafortunadamente no tenemos una cuenta de aplicaciones de Google que hace que todo sea mucho más complicado, si tiene una cuenta de aplicaciones de Google, también puede darle un vistazo a la clase de servidor en la clase scriptapp porque puede hacer el mismo personal sin importrange con eso, gracias por tus esfuerzos - user1630428

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.