0

助けてください、

私の 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.
4

2 に答える 2