使用任务计划程序在VBS中下载公开的Google电子表格

时间:2016-08-19 18:02:52

标签: vbscript download google-sheets scheduled-tasks taskscheduler

请帮忙,

我的vbscript: saveGSheet.vbs (下载表)在手动运行时正常工作。我想要自动执行此操作,但自动任务不会下载该文件。

  

如何在任务计划程序中运行它?在Windows Server 2008上。

任务计划程序 - 设置:

  • 操作:使用代码运行程序: saveGSheet.bat c:\Windows\SysWOW64\cscript saveGSheet.vbs
  • 将任务作为LOCAL SERVICE运行
  • 未登录
  • 时运行任务

已经尝试过:

  • 以最高权限运行无济于事
  • 创建"桌面"文件夹无济于事
  • "以批处理作业登录"没有帮助

可能的原因:

未登录意味着对象无法正常工作 - 可能需要以MS Excel等交互模式运行?我不明白我的脚本中需要运行什么交互式(登录)?

  • " MSXML2.XMLHTTP.3.0"
  • " ADODB.Stream"

VBSCRIPT:

' 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.

1 个答案:

答案 0 :(得分:0)

修改 saveGSheet.bat ,如下所示:

c:\Windows\SysWOW64\cscript saveGSheet.vbs > %temp%\saveGSheet.log 2>&1

执行任务后,检查%temp%\ saveGSheet.log 中日志文件的内容,该内容应该为您提供进一步调试的线索