Google Directory API - 批量添加成员到组

时间:2015-03-18 20:53:06

标签: google-admin-sdk google-groups google-groups-api

我正在使用Google Admin SDK创建,更新和删除邮件列表(也称为群组)。

到目前为止一切正常,我可以创建一个新组并添加成员。但是:每增加一个成员需要大约1秒,所以我想到一个批处理请求,一次将多个用户添加到一个组。

在Google管理界面中,可以轻松添加多个用户,但我没有找到任何方法通过API实现此功能。

有没有办法这样做,还是我必须遍历每个用户?


如果必须为每个用户执行此操作,但需要花费大量时间:

    $service = new Google_Service_Directory($this->getGoogleClient());

    $user = new Google_Service_Directory_Member();
    $user->setEmail('test@test.com');
    $user->setRole('MEMBER');
    $user->setType('USER');

    $service->members->insert($group_id, $user);

2 个答案:

答案 0 :(得分:2)

最后我自己找到了一个解决方案:Admin SDK带有Batch类:)

要获得批处理请求,必须执行以下步骤:

启动Google客户端时,请在代码中添加以下行

    $client->setUseBatch(true);

然后您可以启动批处理对象

    $batch = new Google_Http_Batch($client);

对上面发布的代码进行了一些修改,这让我想到了这段代码

    foreach($arr_users as $user)
    {
            $userdata = new Google_Service_Directory_Member();
            $userdata->setEmail($user);
            $userdata->setRole('MEMBER');
            $userdata->setType('USER');
            $batch->add($service->members->insert($temp_list_name, $userdata));
    }

最后你必须执行这一行所做的请求:

    $client->execute($batch);

全部而且完美无缺

答案 1 :(得分:1)

在使用Christian Lange的方法时,我遇到了这个错误-

Argument 1 passed to Google\Client::execute() must implement interface Psr\Http\Message\RequestInterface, instance of Google\Http\Batch given,

所以我改用了它

$client->setUseBatch(true);

$service = new Google_Service_Directory($client);

$batch = $service->createBatch();

foreach ($emails as $email)
    {
        $user = new Google_Service_Directory_Member(array('email' => $email,
            'kind' => 'member',
            'role' => 'MEMBER',
            'type' => 'USER'));

        $list = $service->members->insert($key, $user);

        $batch->add($list);
    }
$resultsBatch = $batch->execute();