首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不启用API访问的情况下下载Google Drive文件?

如何在不启用API访问的情况下下载Google Drive文件?
EN

Stack Overflow用户
提问于 2015-03-11 01:58:51
回答 1查看 4.5K关注 0票数 0

寻找一种从共享的Google Drive下载特定文件的方法。类似于批处理文件的东西就更好了。运行它,它将下载所需的5/6文件,并将它们放入网络驱动器位置。使用原生windows的东西,没有特定的文件(工作相关,所以限制下载等)。

我试过几件事,但似乎就是想不通。

到目前为止我已经尝试过的东西:

我尝试过以各种形式使用PowerShell来实现此目的。但是有一种奇怪的感觉,那就是公司代理正在阻止它的工作。

已经尝试过:

代码语言:javascript
代码运行次数:0
运行
复制
$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")

和:

代码语言:javascript
代码运行次数:0
运行
复制
$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‘

代码语言:javascript
代码运行次数:0
运行
复制
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

我试过通过批处理来做这件事,但是没有效果。使用我在网上找到的这个脚本:

代码语言:javascript
代码运行次数:0
运行
复制
   @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
EN

回答 1

Stack Overflow用户

发布于 2015-03-12 01: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用于您自己的驱动器,可能会被恶意使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28970826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档