2

我的 Google 群组中有大约 15000 多名成员,我想将它们导出为 CSV 文件。Google Groups 说有太多无法导出 有没有其他方法可以导出所有 15000+ 成员?

4

2 回答 2

1

这可以使用 Directory API。您可以在此处查看如何在 Google Developer's Console 中设置具有适当范围的项目。下面的代码示例显示了我是如何为我的电子邮件列表管理器执行此操作的(用 Python3 编写的)。请注意,我的只是输出到一个列表,但你也可以写入一个 csv。

import urllib.request, urllib.parse, urllib.error
import json

req = urllib.request.Request("https://www.googleapis.com/admin/directory/v1/groups/%s/members" % (group.replace("@", "%40").replace(".", "%2E")))
req.add_header("Authorization", "Bearer %s" % (authToken))
rawResponse = urllib.request.urlopen(req)
fResponse = json.loads(rawResponse.readall().decode('utf-8'))
if "members" in fResponse:
    curMembers = fResponse["members"]
    while "nextPageToken" in fResponse:
        req = urllib.request.Request("https://www.googleapis.com/admin/directory/v1/groups/%s/members?pageToken=%s" % (group.replace("@", "%40").replace(".", "%2E"), fResponse['nextPageToken']))
        req.add_header("Authorization", "Bearer %s" % (authToken))
        rawResponse = urllib.request.urlopen(req)
        fResponse = json.loads(rawResponse.readall().decode('utf-8'))
        if "members" in fResponse:
            curMembers.extend(fResponse["members"])

您需要定义一种方法来检索 oauth2 身份验证令牌(上述代码段中的 authToken)。我这样做如下,但有专门的库用于此(只是不是我知道的 Python3):

def RenewToken():
    """
    This function retrieves an authentication token from Google which will allow the script
    to view and edit group membership
    """
    clientID = "client_id.apps.googleusercontent.com"
    clientSecret = "client_secret"
    grantType = "refresh_token"
    responseType = "code"
    refreshToken = "refresh_token"
    requestDict = {"client_secret": clientSecret,  #field-value pairs for the request body
                   "grant_type": grantType,
                   "refresh_token": refreshToken,
                   "client_id": clientID}
    requestUri = "https://accounts.google.com/o/oauth2/token"
    requestString = urllib.parse.urlencode(requestDict)
    requestBody = requestString.encode('utf-8')
    request = urllib.request.Request(requestUri, data=requestBody)
    response = urllib.request.urlopen(request)
    responseDict = json.loads(response.readall().decode('utf-8'))
    return responseDict['access_token']

您可以从 Google 开发者控制台为您的项目获取 client_id、client_secret 和 refresh_token。

于 2015-07-21T16:30:23.943 回答
0

您可以在 Google 电子表格中导出您的 google 组中的所有联系人

链接:https ://developers.google.com/apps-script/reference/groups/

之后您可以创建触发器以动态添加新联系人,并将您的 Google 电子表格导出到 cvs 文件中。

您可以快速简单地创建此解决方案。

于 2015-02-15T11:16:40.020 回答