Mostrar URL usado para editar respostas de um Formulário do Google em uma planilha do Google usando um script

11

Estou tentando fazer com que o URL de edição de um Formulário do Google seja preenchido automaticamente na resposta do Google Sheet ao qual está anexado. Já vi isso e quero usá-lo, mas estou tendo problemas para tentar descobrir exatamente onde colocar o script.

Tentei colocá-lo no editor de scripts na planilha do Google em que gostaria que o URL aparecesse, mas não tenho certeza para onde ir a partir daí. No editor de scripts, tentei testá-lo como um complemento, mas isso não acabou funcionando.

Tenho pouca experiência com scripts e o editor de scripts no Planilhas Google. Como observação final, estou usando outro complemento chamado AutoCrat na mesma planilha do Google.

cortes
fonte
Além do link para a fonte do código, você tentou incluir o código e as etapas seguidas para realizar seus testes.
Rubén

Respostas:

16

Resposta curta

O link aponta para uma sessão de perguntas e respostas que tem duas respostas, mas nenhuma delas parece adequada. Ou seja, o código de uma das respostas está incompleto e os dois enviam e-mails, portanto a adoção é muito complexa para ser usada como ponto de partida.

Abaixo está um script que é mais fácil de adotar.

Instruções

  1. Crie um formulário de teste e anote o ID do formulário (entre ../d/e /editno URL). Nova forma

  2. Defina o formulário para enviar respostas para uma nova planilha. Conectar uma planilha

  3. Você será redirecionado para a nova planilha. Anote o nome da planilha ativa (renomeie-o, se desejar) e adicione um cabeçalho à coluna a ser usada para conter os URLs de edição da resposta, ou seja Edit Url. NOTA: A capitalização é muito importante, portanto, tenha muito cuidado com a forma como a escreve. Planilha de respostas

  4. Vá para Tools > Script editoradicionar um projeto de script do Google Apps vinculado à planilha. Scripts de planilha

  5. Substitua o código padrão pelo código abaixo (lembre-se de editar as variáveis ​​globais de acordo com o seu caso). Código de script

  6. Salve o projeto e adicione um acionador de cúpula de formulário instalável (se você receber uma caixa de diálogo "Autorização necessária", clique em "Revisar permissões" e depois em "Permitir"). Gatilho de envio de formulário

  7. Envie algumas respostas de amostra para testar a solução.

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 adicionais

Eu criei uma essência com o conteúdo da pergunta e resposta. this b / c Estou explorando maneiras de colaborar melhor entre os usuários finais que escrevem código.

Rubén
fonte
1
Entendi, era o nome da planilha e peguei '/ viewform' no final do URL. Muito obrigado!
Nicks
1
@ Rubén - Tomei a liberdade de adicionar um pouco mais de detalhes ao seu ótimo tutorial, pois lutei com algumas das etapas ao segui-lo.
Sphinxxx
1
Está bem. A principal razão pela qual alterei o código foi mostrar que você pode usar FormApp.openById()apenas o ID do formulário e não FormApp.openByUrl()o URL inteiro, caso o formato do URL do Google mude no futuro. Vou deixar um comentário sobre sua essência.
Sphinxxx
3
Na minha janela de script do google, os "gatilhos do projeto atual" estavam em "Editar".
DVB
1
@HoangTrinh Veja canEditResponse ()
Rubén