Как получить свободное место на моем Google Диске без использования API? - PullRequest
0 голосов
/ 05 сентября 2018

Я хочу получить свободное место / квоту на моем диске Google. Я могу добиться этого с помощью Google Drive API. Но я не хочу делать это через API.

Может кто-нибудь помочь мне сделать это через веб-запрос через PowerShell без API. Я ищу ниже значение согласно изображению:

Scrrenshot from Gmail account that shows the acquired space at downside

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Спасибо за ваш ответ, но это я уже выполнил, используя Google Drive API. Но моя проблема в том, что мне нужно получить эти данные от 100+ учетных записей, я не могу настроить каждую учетную запись, чтобы включить API и создать учетные данные для каждой учетной записи. Вот почему я спрашиваю, можно ли этого достичь без API, вызывая веб-запрос, используя простой URL-адрес Gmail или любым другим способом.

#GDrive variable
$ClientID = "<clientID>"
$ClientSecret = "<Secret>"
$RefreshToken = "<refreshtoken>"

function Get-GdriveAccessToken {

$params = @{
    Uri = 'https://accounts.google.com/o/oauth2/token'
    Body = @(
        "refresh_token=$RefreshToken", # Replace $RefreshToken with your refresh token
        "client_id=$ClientID",         # Replace $ClientID with your client ID
        "client_secret=$ClientSecret", # Replace $ClientSecret with your client secret
        "grant_type=refresh_token"
    ) -join '&'
    Method = 'Post'
    ContentType = 'application/x-www-form-urlencoded'
}
$accessToken = (Invoke-RestMethod @params).access_token
}

function get-percentage {
# Set the authentication headers
$headers = @{
    'Authorization' = "Bearer $accessToken"
    'Content-type' = 'application/json'
}
$storage = Invoke-RestMethod -Uri "https://www.googleapis.com/drive/v2/about" -Headers $headers
$total = $storage.quotaBytesTotal
$used = $storage.quotaBytesUsed
$percentage = [math]::round($used/$total * 100)
}

try { Get-GDriveAccessToken }
CATCH { write-host " Error Occured duirng Access token grant, see below for the error details "
        $Gerror_1 = $_.exception
        write-host $Gerror_1.status -ForegroundColor Red
        write-host $Gerror_1.Response -ForegroundColor Red
        write-host $Gerror_1.Message -ForegroundColor Red
        write-host 
        break }

try { get-percentage }
CATCH { write-host " Error Occured duirng GDrive Access, see below for the error details "
        $Gerror_2 = $_.exception
        write-host $Gerror_2.status -ForegroundColor Red
        write-host $Gerror_2.Response -ForegroundColor Red
        write-host $Gerror_2.Message -ForegroundColor Red
        write-host 
        break }
0 голосов
/ 05 сентября 2018

Если вы хотите получить программный доступ к Google Drive, вам придется использовать API Google Drive - это единственный способ. API Google Drive имеет метод с именем About.get

Получает информацию о пользователе, диске пользователя и возможностях системы.

запрос

GET https://www.googleapis.com/drive/v3/about

ответ

{
 "storageQuota": {
  "limit": "125627793408",
  "usage": "14149023751",
  "usageInDrive": "2661743479",
  "usageInDriveTrash": "838401923"
 }
}

Powershell

Я не использовал API Google Drive с PowerShell, но я использовал API Google Analytics с ним. Самым сложным является аутентификация, полный код которой находится здесь Google Oauth Powershell

Set-PSDebug -Off
Clear-Host
##########################################################################################################################
#
# Using refresh token to get new access token
# The access token is used to access an api by sending the access_token parm with any request. 
#  Access tokens are only valid for about an hour after that you will need to request a new one using your refresh_token
#
##########################################################################################################################

$clientId = "-9c6a8mimeradap3nn24ac76urlpdvhoe.apps.googleusercontent.com";
$secret = "jUFTGhA8Z7FelntdvUz10fP5";
$redirectURI = "urn:ietf:wg:oauth:2.0:oob";
$refreshToken = "1/t8yW_v0gnqudE3y0_J6RKOqV5ek25Whogp49leCGqt8";

$refreshTokenParams = @{
      client_id=$clientId;
      client_secret=$secret;
          refresh_token=$refreshToken;
      grant_type='refresh_token';
    }

$token = Invoke-RestMethod -Uri "https://accounts.google.com/o/oauth2/token" -Method POST -Body $refreshTokenParams 
"Response:" 

"Access Token:  $($token.access_token)"

после этого должно быть дело

$data = Invoke-RestMethod -ContentType 'application/json' -Uri "https://www.googleapis.com/drive/v3/about?access_token=$($token.access_token)" -Method GET 

У меня не было времени проверить это своего рода обоснованное предположение из моего примера аналитики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...