Cree formularios de Google personalizados automáticamente a partir de un script de aplicación de Google

Quiero crear un formulario personalizado usando un script de Google Apps, pero no pude encontrar la forma en la documentación. Por ejemplo, para un usuario diferente las preguntas serían:

  • Describir un "árbol"
  • Describir una "montaña"
  • Describir un "río"

... y así

¿Es esto posible con Google Apps Script?

preguntado el 31 de julio de 12 a las 14:07

Su pregunta es probablemente demasiado vaga para obtener algo más que un '¡sí podemos!' todos sabemos que ha tenido bastante éxito en el pasado, pero no es muy útil en este foro... Dicho esto, confirmo la respuesta de megabyte1024: SÍ ;-) -

@Gootyfer... ¿te refieres a crear un formulario como en un formulario que captura datos y los almacena en una hoja de cálculo? Uno que se puede enviar por correo electrónico, similar a google.com/google-ds/formularios ? -

Tal vez no me expliqué. Lo siento por eso. -

Tal vez no me expliqué. Lo siento por eso. Quería saber si es posible crear un Formulario de Google (google.com/google-ds/formularios), no desde la interfaz de usuario sino mediante programación desde un script. Quiero hacer esto para crear encuestas personalizadas o encuestas generadas aleatoriamente. Por ejemplo, en un curso de 20 alumnos quiero hacerle una pregunta a Peter sobre un colega al azar. Por lo tanto, para crear la pregunta "¿Qué opinas sobre xx_Random_colleague_xx?", quiero hacerlo desde un script en lugar de crear 20 formularios en la interfaz de usuario de formularios. ¿Es posible? -

2 Respuestas

Ahora en 2014, sí, puedes hacer una forma dinámica:

Hay tres lugares donde cambias el formulario.

  1. Puede crear varios formularios estándar por adelantado y entregar un formulario diferente a cada usuario o grupo de usuarios: primero cree el primer formulario. Luego haga un script que envíe este formulario a los usuarios que desee, luego repita todos los elementos y reemplace el texto. (Ver código al final de esta publicación)

  2. Puede crear un formulario estándar y luego reemplazar cierto texto cada vez antes de entregar el formulario. Esto se puede hacer con el onOpen() desencadenar.

Nota: Podría ser que esto no funcione como está documentado. No pude usar este método, y onOpen() funcionaba solo para abrir el documento PARA EDITAR, no para LLENAR. No quiero profundizar demasiado en esto, pero parece contrario a la documentación, que establece que la limitación ABRIR PARA EDITAR se aplica solo al disparador instalable y no al disparador simple.

  1. Después de que cada usuario envíe el formulario, en un activador instalado que ejecuta la función setQuiz(), el activador se configura para actuar EN ENVÍO. Cada vez que un usuario envíe una respuesta, reemplace los textos como en el n. ° 1 anterior. Esto funciona, PERO, si el próximo usuario hace clic antes de que la función se complete reemplazando todos los textos en el formulario, ¡el próximo usuario puede obtener partes del formulario antes de que fueran reemplazadas!

No es una muy buena idea.

Aquí está el código para la primera solución (y la tercera)

  function setQuiz(keyword, replacement){
    var keyword = ...
    var replacement = ...
    var form = FormApp.getActiveForm();
    var items = form.getItems();
    var txt;
    for (i=0; i<items.length; i++){
        txt = items[i].getTitle();
        txt = txt.replace(replacement, keyword);
        items[i].setTitle(txt);
        txt = "";
        txt = items[i].getHelpText();
        txt = txt.replace(replacement, keyword);
        items[i].setHelpText(txt);
     }
     return form;
     // CREATE A COPY of the form
     // and send email with link to the form's COPY in next method, which will be done, only after this method replaced all texts. (see issue with solution 3)
     // note you'll have to iterate between the replacement texts each time. So if you start out with tree to mountain, you must remember to change mountain to river... 

Respondido 02 Feb 14, 18:02

La respuesta corta está en los comentarios. Una respuesta un poco detallada es

  1. Crea una hoja de cálculo. Llene un par de columnas allí como las siguientes
user1@email.com      tree
user2@email.com      mountain
user3@email.com      river
  1. En su secuencia de comandos: abra la hoja de cálculo, lea un rango que contenga las columnas llenas en una matriz. Documentación aquí y aquí
  2. En su secuencia de comandos: obtenga el correo electrónico del usuario usando el Session.getActiveUser().getEmail() función, busque el correo electrónico en la matriz.
  3. En su script: cree su formulario con una etiqueta. El texto de la etiqueta debe ser algo como label.setText('Describe a "' + usersWord + '"');

Respondido 31 Jul 12, 15:07

Tal vez no me expliqué. Lo siento. Quería saber si es posible crear un Formulario de Google (google.com/google-ds/forms), no desde la interfaz de usuario sino mediante programación desde un script. Quiero hacer esto para crear encuestas personalizadas o encuestas generadas aleatoriamente. Por ejemplo, en un curso de 20 alumnos quiero hacerle una pregunta a Peter sobre un colega al azar. Por lo tanto, para crear la pregunta "¿Qué opinas sobre xx_Random_colleague_xx?", quiero hacerlo desde un script en lugar de crear 20 formularios en la interfaz de usuario de formularios. ¿Es posible? - Gootyfer

@gootyfer. Ahora los formularios de Google no son compatibles con GAS. Puede enviar una solicitud de función a la Rastreador de problemas de GAS. - megabyte1024

¡Muchas gracias por la pronta respuesta! - Gootyfer

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