2011-01-13 14 views
0

Ich versuche, eine Excel-Datei von einer Webseite mit Hilfe von WSH-SkriptenWie kann ich eine Javascript-Funktion von VBScript ausführen?

herunterzuladen Mein Ziel ist es, die Excel-Datei von einer Webseite auf meinem Computer zu speichern. Die Schritte, die ich gemacht habe, sind: Eine vbs-Datei, die sich auf der https-Webseite anmeldet, leitet mich auf eine andere Seite weiter, indem ich den zweiten run-Befehl benutze, der einen neuen Tab öffnet, aber danach mein begrenztes Wissen isn Ich kann eine Lösung finden, wie ich die Datei vom Download-Link auf der Website zu einem Speicherort auf meiner Festplatte herunterladen kann.

Dim wshShell 
Set wshShell = CreateObject("WScript.Shell") 
WshShell.Run "URL", 9 
wscript.sleep 3000 
WshShell.SendKeys "[email protected]" 
WshShell.SendKeys "{tab}" 
WshShell.SendKeys "password" 
WshShell.SendKeys "{enter}" 
WshShell.Run "Another_URL" 

An diesem Punkt gibt es einen Download Link, die eine Javascript-Funktion hat javascript:download(parameters), die bei manuellem Klick einen einzigartigen Download-Link erzeugt.

Gibt es eine Möglichkeit, die ich mit jedem Wscript herunterladen kann? Ich möchte, dass es mit Windows 7 und IE 7 funktioniert. Ich habe versucht, es zu untersuchen, aber es bringt nichts.

Antwort

0

ich einen gewissen Erfolg mit einem Skript hatte ähnlich wie diese

option explicit 

Const URL = "http://url/to/file.xls" 
Const adTypeBinary = 1 
Const adSaveCreateOverWrite = 2 

' request the file over http 
dim http: set http = CreateObject("MSXML2.XMLHTTP") 
http.open "GET", URL, false 
http.send 

' write the response text to a binary file 
dim stream: set stream = CreateObject("ADODB.Stream") 
stream.type = adTypeBinary 
stream.open 
stream.write http.responseBody 
stream.SaveToFile "output.xls", adSaveCreateOverWrite 
stream.close 

obwohl ich es nicht für https-Anfragen verwendet haben, gehe ich davon aus, dass der Server Benutzername und Passwort als 4. akzeptieren und 5. Parameter zu MSXML2.XMLHTTPopen Aufruf.

http.open "GET", URL, false, "[email protected]", "password" 

Ich habe es ausprobiert und es funktioniert auf jeden Fall über eine Ebene http Anfrage

http://msdn.microsoft.com/en-us/library/ms759148(VS.85).aspx für HTTP-Anfrage und http://msdn.microsoft.com/en-us/library/ms675032(VS.85).aspx für adodb Strom


Nun eine Alternative zu der oben sehen sein könnte Verwenden des Internet Explorer-Automatisierungsobjekts. Ich bin mir nicht sicher, wie Sie eine Datei herunterladen umgehen konnte, aber der folgende Code-Schnipsel können Sie einen Ausgangspunkt geben

option explicit 

' create an instance of IE 
dim ie: set ie = CreateObject("InternetExplorer.Application") 
' load a url 
ie.Navigate "http://stackoverflow.com/questions/4677595/how-can-i-execute-a-javascript-function-from-vbscript" 
' sleep while IE loads the content 
do while ie.busy 
    WScript.Sleep 10 
loop 
'access the document object 
dim doc: set doc = ie.document 

' have IE natvigate to a link on the downloaded page. this could be your 
' download link perhaps? 
ie.Navigate doc.anchors(0).href 
' wait while the new page loads... 
do while ie.busy 
    WScript.Sleep 10 
loop 
' output the new content 
WScript.Echo doc.documentElement.innerHTML 
' close IE 
ie.Quit 
+0

Dies ist der Link, https erzeugt wird: // Fixed_URL/Random_No_Generated _tbldnld = (1 param) & sc = (2. param von fn) Manuell dies ist, was passiert, nachdem ich auf Download geklickt habe, öffnet sich eine Datei Download-Box, die ich dann auf Speichern klicke, um sie an einem Ort zu speichern. URL hat nicht den Dateinamen, aber der Name stimmt mit dem der Zufallsnummer überein. Also, kann ich dieses Verhalten progmatisch nachahmen, wenn ja, ist es möglich mit Skripten oder irgendein Programm geschrieben werden - bitte führen Sie mich, und wenn nicht warum ist es nicht möglich.thank Sie Orakel zertifizierte professior für die Hilfe, aber ich sehe nicht, wie das zu lösen . – tangyorangesour

Verwandte Themen