如何检查Google Drive文件夹的内容是否已更改?

时间:2018-11-25 18:34:36

标签: php google-drive-api drive

我想对文件夹内容进行缓存,因此,如果我能以某种方式获取Google驱动器中的文件夹已更改的信息,然后刷新缓存,那就太酷了。有办法吗?最好用php。

1 个答案:

答案 0 :(得分:1)

一段时间后,我想到了一个不错的解决方案:

function isGoogleDriveFolderContentUpdated($lastTime, $folderId, &$client)
{

    $appsactivityService = new Google_Service_Appsactivity($client);

    $optParams = array(
        'source'           => 'drive.google.com',
        'drive.ancestorId' => $folderId,
        'pageSize'         => 1,
    );

    $results = $appsactivityService->activities->listActivities($optParams);

    if (count($results->getActivities()) == 0) {

        return 0;

    } else {
        $activities = $results->getActivities();
        $activity = $activities[0];

        $event = $activity->getCombinedEvent();
        $activityTime = date(DateTime::RFC3339, $event->getEventTimeMillis() / 1000);

        $lastTime = strtotime($lastTime);
        $activityTime = strtotime($activityTime);

        if ($activityTime > $lastTime) {
            //folder content changed since last check
            return 1;
        }

        return 0;
    }

}

可以这样使用:

echo isGoogleDriveFolderContentUpdated("2018-11-26T21:03:57+01:00" ,"1A9CXgB44F1khfDAzU4t0R322TWh", $client);

其中第一个参数是最后检查的日期时间,第二个Google驱动器文件夹ID和client variable的最后引用。 另外,您的应用程序应具有以下范围:https://www.googleapis.com/auth/activity,否则您将收到错误消息。