Mostrar URL utilizada para editar respuestas de un formulario de Google en una hoja de cálculo de Google mediante un script

11

Estoy tratando de hacer que la URL de edición de un formulario de Google se complete automáticamente en la hoja de Google de respuesta a la que está adjunta. Ya he visto esto y quiero usarlo, pero tengo problemas para tratar de averiguar exactamente dónde colocar el script.

Intenté ponerlo en el editor de scripts en la hoja de cálculo de Google en la que me gustaría que apareciera la URL, pero no estoy seguro de a dónde ir desde allí. En el editor de scripts he intentado probarlo como un complemento, pero eso no terminó funcionando.

Tengo poca experiencia con guiones y el editor de guiones en Hojas de cálculo de Google. Como nota final, estoy usando otro complemento llamado AutoCrat en la misma hoja de cálculo de Google.

mellas
fuente
Además del enlace a la fuente del código que intentaste, es bueno incluir el código y los pasos seguidos para hacer tus pruebas.
Rubén

Respuestas:

16

Respuesta corta

El enlace apunta a un Q&A que tiene dos respuestas, pero ninguna de ellas me parece apropiada. Es decir, el código de una de las respuestas está incompleto y ambos envían correos electrónicos, por lo que la adopción es demasiado compleja para ser utilizada como punto de partida.

A continuación se muestra un script que es más fácil de adoptar.

Instrucciones

  1. Cree un formulario de prueba y anote la ID del formulario (entre ../d/y /editen la url). Nueva forma

  2. Configure el formulario para enviar respuestas a una nueva hoja de cálculo. Conecta una hoja de cálculo

  3. Serás redirigido a la nueva hoja de cálculo. Anote el nombre de la hoja activa (cámbiele el nombre si lo desea) y agregue un encabezado a la columna que se utilizará para contener las URL de edición de respuesta, es decir Edit Url. NOTA: La capitalización es muy importante, así que tenga mucho cuidado sobre cómo escribirla. Hoja de cálculo de respuestas

  4. Vaya a Tools > Script editorpara agregar un proyecto de Google Apps Script limitado a la hoja de cálculo. Scripts de hoja de cálculo

  5. Reemplace el código predeterminado con el siguiente código (recuerde editar las variables globales según su caso). Código de script

  6. Guarde el proyecto y luego agregue un activador de cumbre de forma instalable (si obtiene un cuadro de diálogo "Se requiere autorización", haga clic en "Revisar permisos" y luego "Permitir"). Formulario de envío de disparador

  7. Envíe algunas respuestas de muestra para probar la solución.

Código

/*
 * Global Variables
 */

// Form URL
var formURL = 'https://docs.google.com/forms/d/form-id/viewform';
// Sheet name used as destination of the form responses
var sheetName = 'Form Responses 1';
/*
 * Name of the column to be used to hold the response edit URLs 
 * It should match exactly the header of the related column, 
 * otherwise it will do nothing.
 */
var columnName = 'Edit Url' ;
// Responses starting row
var startRow = 2;

function getEditResponseUrls(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
  var columnIndex = headers[0].indexOf(columnName);
  var data = sheet.getDataRange().getValues();
  var form = FormApp.openByUrl(formURL);
  for(var i = startRow-1; i < data.length; i++) {
    if(data[i][0] != '' && data[i][columnIndex] == '') {
      var timestamp = data[i][0];
      var formSubmitted = form.getResponses(timestamp);
      if(formSubmitted.length < 1) continue;
      var editResponseUrl = formSubmitted[0].getEditResponseUrl();
      sheet.getRange(i+1, columnIndex+1).setValue(editResponseUrl);
    }
  }
}

Recursos adicionales

Creé una esencia con el contenido de la pregunta y la respuesta. Este b / c estoy explorando formas de colaborar mejor entre los usuarios finales que escriben código.

Rubén
fuente
1
Lo obtuve, era el nombre de la hoja, y saqué '/ viewform' al final de la URL. ¡Muchas gracias!
nicks
1
@ Rubén - Me tomé la libertad de agregar un poco más de detalle a tu gran tutorial, mientras luchaba con algunos de los pasos cuando lo seguí yo mismo.
Sphinxxx
1
Okay. La razón principal por la que cambié el código fue para mostrar que solo se puede usar FormApp.openById()con el ID del formulario en lugar de FormApp.openByUrl()con la URL completa, en caso de que el formato de la URL de Google cambie en el futuro. Dejaré un comentario en tu esencia en su lugar.
Sphinxxx
3
En mi ventana de script de Google, los "disparadores del proyecto actual" estaban en "Editar".
dvb
1
@HoangTrinh See canEditResponse ()
Rubén