如何拉取 Google Workspace Professional 用户 通过 API 驱动利用率,对于单个用户 and/or 所有用户

How to pull a Google Workspace Professional users Drive utilization via API, for a single user and/or all users

我已经在该领域工作了几年,但这是我的第一个堆栈溢出问题!

我的组织希望通过每周发送一封包含总利用率的电子邮件报告来开始跟踪我们在 Google Workspace/G-Suite 中的驱动器利用率。

我无法找到使用 google api 或 google C# 库执行此操作的方法。为简单起见,我将只描述 API.

的问题

我可以设法使用 oauth 提取已登录用户的驱动器利用率数据,但无法确定如何在不以该用户身份登录的情况下获取用户帐户的驱动器利用率,这违背了生成主报告的目的。

Google Workspace 有一个内置的突出显示报告,它显示用于整个域的总存储空间,但我找不到用于该报告的基础 API 调用。我探索 google 驱动器 api 有一段时间了,但似乎无法找到以编程方式执行此操作的方法。

似乎最有可能提供结果的 api 调用是 https://www.googleapis.com/drive/v3/about?fields=storageQuota,用户

但它只有 returns 我的帐户数据。我试过弄乱查询参数,但似乎无法获取任何其他用户数据。这是返回数据的示例。

{
    "user": {
        "kind": "drive#user",
        "displayName": "My user name",
        "photoLink": "https://lh3.googleusercontent.com/a-/image-url",
        "me": true,
        "permissionId": "secret",
        "emailAddress": "mlawrence@domain.com"
    },
    "storageQuota": {
        "usage": "468211110",
        "usageInDrive": "10651797",
        "usageInDriveTrash": "0"
    }
}

json 响应中的“我”键似乎表明 api 应该支持为其他用户调用它。在此先感谢您的关注!

您应该考虑使用服务帐户。一旦您设置了域范围的委派,只需指定您要模拟的用户即可。您需要为每个用户 运行 一次。

string ApplicationName = "Gmail API .NET Quickstart";
            const string serviceAccount = "test@test-api.iam.gserviceaccount.com";

            var certificate = new X509Certificate2(@"c:\test-api-ed4859a67674.p12", "notasecret", X509KeyStorageFlags.Exportable);

            var gsuiteUser = "mlawrence@domain.com";

            var serviceAccountCredentialInitializer = new ServiceAccountCredential.Initializer(serviceAccount)
            {
                User = gsuiteUser,
                Scopes = new[] { GmailService.Scope.drive }

            }.FromCertificate(certificate);

Uploading files to Google Drive API with a service account