サインイン済みのユーザー情報を取得する (viewer)
viewer
クエリを使用すると、現在アクセスしているユーザー(サインイン中のユーザー)のユーザー情報(User オブジェクト)を取得することができます。
指定したログイン ID のユーザー情報を取得する (user)
user
クエリを使用すると、指定したユーザー名のユーザー情報を取得することができます。
取得できるオブジェクトは、viewer
クエリの場合と同様に User オブジェクト です。
ただし、指定したユーザー名が存在しない場合は data.user
フィールドの値は null
になり、errors
フィールドの値が格納されます。
ユーザーのコミット統計情報を取得する(貢献度情報)
User オブジェクト の contributionsCollection
フィールドを参照すると、そのユーザーの一定期間内の コミット数、PR 作成数、PR レビュー数 などの情報を取得することができます。
from
引数と to
引数で統計情報の取得期間を指定します(最長 1 年間)。
日時を省略した場合は、直近の 1 年間の統計情報を取得します。
次の例では、あるユーザーの 2021 年の Contribution 情報を取得しています。
ある組織に所属するユーザー情報を取得する (Organization.membersWithRole)
ルートフィールドで organization
を指定すれば、特定の組織に所属するユーザーの一覧を取得できます。
そこには User
オブジェクトの情報が含まれているので、例えば次のようにすれば、組織のメンバー全員 (membersWithRole
) の過去 1 年間の貢献情報をまとめて取得することができます。
query {
organization(login: "Organization名") {
name
membersWithRole(first: 100) {
nodes {
login # ログインID
name # ユーザー名
email # メールアドレス(ユーザーが公開していれば)
contributionsCollection {
startedAt # 統計情報の開始日時
endedAt # 統計情報の終了日時
totalCommitContributions # 合計コミット数
totalPullRequestContributions # 合計 PR 数
totalPullRequestReviewContributions # 合計レビュー数
}
}
}
}
}
ただし、GitHub GraphQL API の制約上、ユーザー情報は一度に 100 ユーザー分しかとれないので、それ以上のメンバーがいる組織の場合は、GraphQL のページネーション処理 で繰り返しクエリを実行する必要があります。
関連記事