2014-02-07 9 views
6

Ich habe eine Tabelle auf meinem Google Drive und möchte eine CSV-Datei von einer anderen Website herunterladen und in meine Tabelle einfügen. Das Problem ist, dass ich mich zuerst auf der Website anmelden muss, also muss ich dafür eine HTTP-Anfrage verwenden.Google Apps Script Anmeldung auf der Website mit HTTP-Anfrage

Ich habe this Website und this gefunden. Wenn eine dieser Seiten die Antwort darauf hat, dann verstehe ich sie offensichtlich nicht genug, um es herauszufinden. Könnte mir jemand helfen, das herauszufinden? Ich fühle, dass die zweite Seite besonders nah an dem ist, was ich brauche, aber ich verstehe nicht, was sie tut.

Um es noch einmal zu verdeutlichen, möchte ich mich mit einer HTTP-Anfrage anmelden und dann die gleiche Webseite mit einer anderen URL anrufen, die der Aufruf ist, um die CSV-Datei zu erhalten.

Antwort

5

Ich habe eine Menge davon im vergangenen Monat getan, also sollte ich in der Lage sein, Ihnen zu helfen, wir versuchen, das Browserverhalten hier zu emulieren, also müssen Sie zuerst die Entwicklerwerkzeuge von chrome (oder etwas ähnliches) verwenden und notieren Die genauen Dinge, die der Browser den veröffentlichten Formwerten, der aufgerufenen URL und so weiter mag. Das folgende Beispiel zeigt die allgemeine techinique verwendet werden:

Der erste Schritt ist auf die Website einloggen und die Session-Cookie erhalten:

var payload = 
    { 
    "user_session[email]" : "username", 
    "user_session[password]" : "password", 
    };// The actual values of the post variables (like user_session[email]) depends on the site so u need to get it either from the html of the login page or using the developer tools I mentioned. 
    var options = 
    { 
    "method" : "post", 
    "payload" : payload, 
    "followRedirects" : false 
    }; 
    var login = UrlFetchApp.fetch("https://www.website.com/login" , options); 
    var sessionDetails = login.getAllHeaders()['Set-Cookie']; 

Wir in die Website angemeldet haben (Um nur um zu bestätigen einzuloggen die sessionDetails und stimmen Sie mit den Cookies von chrome überein. mit hte GAS eingebaute Funktion und Dump der Daten in der Tabelle Der nächste Schritt ist rein abhängig von der Website, so dass ich u einem allgemeinen Beispiel

var downloadPayload = 
     { 
     "__EVENTTARGET" : 'ctl00$ActionsPlaceHolder$exportDownloadLink1', 
     };// This is just an example it may or may not be needed, if needed u need to trace the values from the developer tools. 
var downloadCsv = UrlFetchApp.fetch("https://www.website.com/", 
            {"headers" : {"Cookie" : sessionDetails}, 
            "method" : "post", 
            "payload" : downloadPayload, 
            }); 
Logger.log(downloadCsv.getContentText()) 

Die Datei nun protokolliert werden soll geben werden, können Sie dann die CSV analysieren.

ein paar Punkte zu beachten:

  • ich, dass alle Form-Post-Werte sind statisch angenommen haben und hartcodiert sein kann, falls dies dann nicht wahr ist, lassen Sie mich wissen, ich Sie eine Funktion geben, dass kann Werte aus dem HTML extrahieren.
  • Bei einigen Websites muss der Browser einen Token-Wert (der Wert wird im HTML-Code enthalten sein) zusammen mit den Anmeldeinformationen senden. In diesem Fall müssen Sie die Werte extrahieren und anschließend posten.
+0

Hallo Abnishek Ram, ich habe fast das gleiche Problem wie OP, aber mein Benutzername und Passwort darf nicht harcoded sein. Der Bewerbungsablauf ist wie folgt: der Benutzer muss seinen "Benutzernamen" und sein "Passwort" in ein Eingabefeld auf der HTML-Seite eingeben und dann, wenn sie korrekt sind, muss der Nutzer sowohl auf der App als auch auf der Website eines Dritten angemeldet sein. Können Sie mir bitte dabei helfen? – Valip

+0

@PavelValeriu Ich bin mir nicht sicher, ob ich Ihre Anforderung verstehe. Kannst du bitte im Detail erklären, was meinst du mit Logged into App? Wie benutzt du Google App Skripte hier? Ich schlage vor, dass Sie einen neuen Beitrag erstellen. –

+0

Ich habe einen neuen Post erstellt, bitte prüfe ihn hier http://stackoverflow.com/questions/37675406/google-script-authenticate-on-external-website – Valip

Verwandte Themen