Как я могу выполнить функцию Javascript из VBScript? - PullRequest
0 голосов
/ 13 января 2011

Я пытаюсь загрузить файл Excel с веб-страницы с помощью сценариев WSH

Моя цель - сохранить файл Excel с веб-страницы на моем компьютере.

Пока чтоЯ предпринял следующие шаги: Сделал файл VBS, который входит на веб-страницу https, перенаправляет меня на другую страницу с помощью команды второго запуска, которая открывает новую вкладку, но после этого мои ограниченные знания не могут найти решениео том, как загрузить файл из ссылки для скачивания на веб-сайте в папку на моем жестком диске.

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

Теперь на этом этапе есть ссылка для скачивания, которая имеет функцию javascript javascript:download(parameters), которая при ручном нажатии генерирует уникальную ссылку для скачивания.

Можно ли как-нибудь скачать это, используя любой Wscript?Я хочу, чтобы он работал с Windows 7 и IE 7. Я попытался изучить его, но это бесполезно.

1 Ответ

0 голосов
/ 13 января 2011

Я добился определенного успеха, используя скрипт, подобный этому

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

, хотя я не использовал его для запросов https, я предполагаю, что сервер примет ваше имя пользователя и пароль в качестве4-й и 5-й параметры для вызова MSXML2.XMLHTTP open.

http.open "GET", URL, false, "username@", "password"

Я пробовал это, и это, безусловно, работает над простым запросом http

см. http://msdn.microsoft.com/en-us/library/ms759148(VS.85).aspx для запроса http и http://msdn.microsoft.com/en-us/library/ms675032(VS.85).aspx для потока adodb


Ну, альтернативой вышеупомянутому может быть использование объекта автоматизации Internet Explorer.Я не уверен, как вы справитесь с загрузкой файлов, но следующий фрагмент может дать вам отправную точку

option explicit

' create an instance of IE
dim ie: set ie = CreateObject("InternetExplorer.Application")
' load a url
ie.Navigate "/3698583/kak-ya-mogu-vypolnit-funktsiy-javascript-iz-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
...