寻找一种从共享的Google Drive下载特定文件的方法。类似于批处理文件的东西就更好了。运行它,它将下载所需的5/6文件,并将它们放入网络驱动器位置。使用原生windows的东西,没有特定的文件(工作相关,所以限制下载等)。
我试过几件事,但似乎就是想不通。
到目前为止我已经尝试过的东西:
我尝试过以各种形式使用PowerShell来实现此目的。但是有一种奇怪的感觉,那就是公司代理正在阻止它的工作。
已经尝试过:
$client = new-object System.Net.WebClient
$client.Credentials = Get-Credential
$client.Proxy.Credentials[System.Net.CredentialCache]::DefaultNetworkCredentials
$client.DownloadFile("https://docs.google.com/a/mydomain.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx","W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx")
和:
$source = "https://docs.google.com/a/mydomain.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx"
$dest = "W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx"
$WebmyClient = New-Object System.Net.WebClient
$WebProxy = New-Object System.Net.WebProxy("http://myproxy.com:1111",$true)
$Credentials = New-Object Net.NetworkCredential("user,"","domain.local")
$Credentials = $Credentials.GetCredential("http://myproxy.com","1111", "KERBEROS");
$WebProxy.Credentials = $Credentials
$WebClient.Proxy = $WebProxy
$WebClient.DownloadFile($source,$dest)
尝试使用bitsadmin执行此操作,但没有成功,它返回- 'Unable to add file - 0x80070005‘
bitsadmin /transfer myDownloadJob /download /priority normal https://docs.google.com/a/mydomain.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx
我试过通过批处理来做这件事,但是没有效果。使用我在网上找到的这个脚本:
@echo off
setlocal
:: uses bitsadmin utility to download a file
:: bitsadmin is not available in winXP Home edition
:: the only way to download a file with 'pure' batch
:download
if "%2" equ "" (
call :help
exit /b 5
)
if "%1" equ "" (
call :help
exit /b 6
)
set url=%~1
set file=%~2
rem ----
if "%~3" NEQ "" (
set /A timeout=%~3
) else (
set timeout=5
)
bitsadmin /cancel download >nul
bitsadmin /create /download download >nul
call bitsadmin /addfile download "%url%" "%CD%\%file%" >nul
bitsadmin /resume download >nul
bitsadmin /setproxysettings download AUTODETECT >nul
set /a attempts=0
:repeat
set /a attempts +=1
if "%attempts%" EQU "10" (
echo TIMED OUT
endlocal
exit /b 1
)
bitsadmin /info download /verbose | find "STATE: ERROR" >nul 2>&1 && endlocal && bitsadmin /cancel download && echo SOME KIND OF ERROR && exit /b 2
bitsadmin /info download /verbose | find "STATE: SUSPENDED" >nul 2>&1 && endlocal && bitsadmin /cancel download &&echo FILE WAS NOT ADDED && exit /b 3
bitsadmin /info download /verbose | find "STATE: TRANSIENT_ERROR" >nul 2>&1 && endlocal && bitsadmin /cancel download &&echo TRANSIENT ERROR && exit /b 4
bitsadmin /info download /verbose | find "STATE: TRANSFERRED" >nul 2>&1 && goto :finishing
w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:%timeout% >nul 2>&1
goto :repeat
:finishing
bitsadmin /complete download >nul
echo download finished
endlocal
goto :eof
:help
echo %~n0 url file [timeout]
echo.
echo https://docs.google.com/a/domainname.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRF-bjnKBI/export?format=xlsx
echo W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx
echo 10
echo.
goto :eof
发布于 2015-03-11 17:24:54
假设您无法启用对您的帐户的api访问(请参阅https://stackoverflow.com/a/27120094/2213940,其中显示了如何仅对您的域中的一个组织启用api访问),您可以执行以下操作:
使用浏览器调试器(我使用的是chrome,它使用F12打开)转到你的驱动器,选择一个你想要下载的文件。
在chrome调试器中,查看"Network“选项卡。清除它可以让事情变得更容易。
现在下载该文件。如果这是一个非谷歌文件,只需从那里下载它。你会看到一个类似"https://drive.google.com/uc?id=XXXXXXXXXX&authuser=0&export=download“的帖子。您可以使用curl来完成相同的帖子,右键单击行并"copy as cookie“,这将复制cURL等内容。
这篇文章会给你一个下载地址。
如果这是一个谷歌文件(如电子表格),你需要做一些类似的事情,但它可能只会工作,如果你这样做,首先打开电子表格,并使用菜单导出为xlsx,这将是最好的备份格式。
这些urls将看起来像"https://docs.google.com/spreadsheets/d/XXXXX/export?format=xlsx&id=XXXX
请注意,在这两种情况下,关键是要包含您的浏览器正在使用的相同cookie。我已经使用过这样的cookie (但用于gmail,而不是驱动器),到目前为止,cookie持续了几个月,还没有过期)。确保脚本安全,因为cookie用于您自己的驱动器,可能会被恶意使用。
https://stackoverflow.com/questions/28970826
复制相似问题