检索每个用户对特定 google 文档所做的更改

ren*_*kre 6 c# google-drive-api

我有以下代码(来自Google Doc Api资源)来从谷歌驱动器获取更改。但是,我想检索每个用户对特定 google 文档所做的更改。有没有办法实现这一目标?

var _driveService = GetDriveServiceInstance();

var requestxx = _driveService.Changes.GetStartPageToken();
var response = requestxx.Execute();
var savedStartPageToken = response.StartPageTokenValue;

// Begin with our last saved start token for this user or the
// current token from GetStartPageToken()
string pageToken = savedStartPageToken;
while (pageToken != null)
{
    var request = _driveService.Changes.List(pageToken);
    request.Spaces = "drive";

    var changes = request.Execute();
    foreach (var change in changes.Changes)
    {

        // Process change
        Console.WriteLine("Change found for file: " + change.FileId);
    }
    if (changes.NewStartPageToken != null)
    {
        // Last page, save this token for the next polling interval
        savedStartPageToken = changes.NewStartPageToken;
    }
    pageToken = changes.NextPageToken;
}
Run Code Online (Sandbox Code Playgroud)

Iam*_*hus 5

我认为最好的方法是使用Google Drive Activity API,它可以提供有关对特定文件所做更改的更多信息。通过调用activity.query,您可以从某个文件中获取所有过去的活动,包括每个活动背后的用户信息。使用此响应,您可以计算每个用户所做更改的数量。

另一种方法,虽然不完整,但会获取文件的修订列表,然后lastModifyingUser从每个修订中获取。但是,正如您所说,修订版可能包含许多更改,因此检索到的数据可能不完整。

此外,如果您认为 Drive API 提供有关对文件所做更改的详细信息会很有用,您可以在问题跟踪器中提交功能请求

我希望这有任何帮助。

  • @renakre 我严重怀疑这样的例子是否存在,更不用说在 c# 中了!我建议您在请求正文中提供 "itemName": "items/{document_id}" 。这将检索响应字段“activities”中的所有过去的活动,其值是[活动](https://developers.google.com/drive/activity/v2/reference/rest/v2/activity/driveactivity# DriveActivity),包含有关“参与者”(进行活动的用户或帐户)、“操作”(有关活动本身的信息)和“目标”(被修改的文件或驱动器)的信息。 (3认同)