助けてください、
私の vbscript: saveGSheet.vbs (シートをダウンロードするため) は、手動で実行すると正常に動作します。これを自動化したいのですが、自動タスクではファイルがダウンロードされません。
これをタスク スケジューラで実行するにはどうすればよいですか? Windows Server 2008 の場合。
タスク スケジューラ - 設定:
- アクション: プログラムを実行: saveGSheet.batとコード:
c:\Windows\SysWOW64\cscript saveGSheet.vbs
- ローカルサービスとしてタスクを実行
- ログインしていないときにタスクを実行する
すでに試しました:
- 最高の権限で実行しても役に立たない
- 「デスクトップ」フォルダを作成しても役に立たない
- 「バッチ ジョブとしてログオン」が役に立たない
考えられる理由:
ログインしていないということは、オブジェクトが正しく機能しないことを意味します。おそらく、MS Excel のようなインタラクティブ モードで実行する必要がありますか? インタラクティブに実行する (ログインする) 必要があるスクリプトの内容がわかりません。
- "MSXML2.XMLHTTP.3.0"
- 「ADODB.ストリーム」
スクリプト:
' Set your settings
strFileURL = "https://docs.google.com/spreadsheets/d/1B5jBWGHT1dGKCwE9KLTlFsyymNCc1s4AH1LcFQOcwqQ/export?format=xlsx"
strHDLocation = "C:\file.xlsx"
' Fetch the file
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
'Response 200 is OK, now download sheet
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
注: サードパーティのアプリは使用しないでください。たとえば、wget は使用しません。
編集: 提案どおりにログ ファイルを作成した結果:
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
C:\AppBackUpTools\ALM\NotifikaceVSE\SLA_Escalation\download_excel\saveGSheet.vbs(27, 3) ADODB.Stream: Write to file failed.