2015-10-27 5 views
10

Wie kann ich neuen R-Benutzern das Senden von Informationen an ein Google-Formular gestatten? (RSelenium erfordert ein wenig eingerichtet, zumindest für Headless-Browsing, so dass es nicht der beste Kandidat IMO ist, aber ich vermisse etwas, das es zur besten Wahl macht).Wie kann ich neuen R-Nutzern das Senden von Informationen an ein Google-Formular gestatten?

Ich habe einige neue R-Benutzer Ich möchte Antworten von interaktiv erhalten und an einen sicheren Ort senden. Ich habe Google Forms ausgewählt, um die Informationen an die Benutzer weiterzuleiten, da sie das Senden von Informationen in eine Richtung ermöglicht und dem Benutzer keinen Zugriff auf die aus dem Formular erstellte Tabelle ermöglicht.

Hier ist ein url of this form:

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

Kontext zu geben, hier ist, wie ich R bin mit dem Benutzer interagieren:

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

question("Was this information helpful?") 

Ich möchte dann, dass TRUE/FALSE zum Google senden Formular oben. Wie kann ich eine Antwort auf das obige Google-Formular in einer Weise senden, die ich in den Code einbetten kann, mit dem der Nutzer interagieren wird und der keine schwierige Einrichtung durch den Nutzer erfordert?

Add-on R-Pakete sind in Ordnung, wenn sie die Aufgabe erfüllen.

+0

Ja oder möglich ein Zeichen Kommentar –

+0

'if (am == "2") FALSE sonst TRUE' ist ein Code-Antipattern. Verwenden Sie nur logische Konstanten, um Variablen zu initialisieren, und * für nichts anderes *. Was du hier schreiben willst, ist einfach 'ans! = '2''. –

+0

@KonradRudolph Quickie-Code, um den Punkt zu demonstrieren, aber Punkt genommen. –

Antwort

10

Sie können eine POST-Abfrage senden. Hier ist ein Beispiel unter Verwendung von httr Paket:

Zum Beispiel:

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) 
    ) 
    } 

Dann können Sie sie nennen:

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

Was ist 'entry.1651773982'? –

+0

Ah ist es in der Quelle als 'entry_' –

+0

@TylerRinker ja es ist in der Quelle. Der Name der Eingabe. Sie sollten den Browser verwenden, um Namen zu finden. – agstudy

Verwandte Themen