2015-10-27 18 views
10

Come posso consentire ai nuovi utenti R di inviare informazioni a un modulo Google? (RSelenium richiede un po 'di configurazione, almeno per la navigazione headless, quindi non è il miglior candidato IMO ma potrei mancare qualcosa che lo rende la scelta migliore).Come posso consentire ai nuovi utenti R di inviare informazioni a un modulo Google?

Ho alcuni nuovi utenti R Desidero ricevere risposte da in modo interattivo e inviare a un luogo sicuro. Ho scelto Google Forms per passare le informazioni, in quanto consente di inviare le informazioni in un modo e non consente all'utente l'accesso al foglio di calcolo creato dal modulo.

Ecco un url of this form:

url <- "https://docs.google.com/forms/d/1tz2RPftOLRCQrGSvgJTRELrd9sdIrSZ_kxfoFdHiqD4/viewform" 

per fornire contesto ecco come sto usando R per interagire con l'utente:

question <- function(message, opts = c("Yes", "No")){ 
    message(message) 
    ans <- menu(opts) 
    if (ans == "2") FALSE else TRUE 
} 

question("Was this information helpful?") 

Voglio quindi inviare che TRUE/FALSE a Google modulo sopra. Come posso inviare una risposta al modulo Google sopra da R in un modo in cui posso incorporare il codice con cui l'utente interagirà e non richiede una configurazione difficile da parte dell'utente?

I pacchetti add on R vanno bene se eseguono l'operazione.

+0

Sì o possibile un carattere di commento –

+0

'if (ans == "2") FALSE else TRUE' è un codice antipattern. Utilizzare solo costanti logiche per inizializzare le variabili e * per nient'altro *. Quello che vuoi scrivere qui è semplicemente 'ans! = '2''. –

+0

@KonradRudolph codice quickie per la dimostrazione del punto ma punto preso. –

risposta

10

È possibile inviare una query POST. Ecco un esempio utilizzando httr pacchetto:

Ad esempio:

library(httr) 
send_response<- 
    function(response){ 
    form_url <- "https://docs.google.com/forms/d/1tz2RPftOLRCQrGSvgJTRELrd9sdIrSZ_kxfoFdHiqD4/formResponse" 
    POST(form_url, 
     query = list(`entry.1651773982`=response) 
    ) 
    } 

Poi si può chiamare:

send_response(question("Was this information helpful?")) 
+0

Che cosa è "entry.1651773982'? –

+0

Ah è nel sourse come 'entry_' –

+0

@TylerRinker sì è nella fonte. Il nome dell'input. Dovresti usare il browser per scoprire i nomi. – agstudy

Problemi correlati