Skip to content

Instantly share code, notes, and snippets.

@tatsumin39
Last active June 8, 2021 15:20
Show Gist options
  • Save tatsumin39/8c88116898fc31740cab9271722ae480 to your computer and use it in GitHub Desktop.
Save tatsumin39/8c88116898fc31740cab9271722ae480 to your computer and use it in GitHub Desktop.
GitHub Organizations内のメンバーを抽出するGAS

GitHub Organizations内のメンバーを抽出するGAS

使い方

GitHub Tokenを発行します。

https://github.com/settings/tokens

必要な権限は read:org です

取得したGitHub TokenはGASのYour_GitHub_Token部分に置き換えてください。

Googleスプレッドシートに下記のシートを用意します。

シート名:Members

下記のスクリプトを作成

GitHubUserList.gs

スクリプト内の{Your_Organizations}は取得対象のOrganizations名に置き換えてください。

GASを実行することで必要な情報を出力することができます。

//GitHubユーザー一覧を取得する。
function getGitHubMembers() {
const GitHub_app_token = "Your_GitHub_Token";
var option = {
method: 'get',
Accept: "application/vnd.github.v3+json",
"headers": {"Authorization": "token " + GitHub_app_token}
};
//スプレッドシート初期化
const Members_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Members');
Members_sheet.clear();
Members_sheet.appendRow(['GitHubID','UserType']);
var page = 1;
while(true) {
const url = "https://api.github.com/orgs/{Your_Organizations}/members?per_page=100&page=" + page;
const response = UrlFetchApp.fetch(url,option);
const datas = JSON.parse(response);
let loginArr = [];
if(datas.length == 0) {
break;
} else {
page++;
for (var data of datas) {
let id = data.login;
loginArr.push([ id, "Members"]);
}
//スプレッドシートに書き込み
Members_sheet.getRange( Members_sheet.getLastRow()+1,1, loginArr.length, loginArr[0].length).setValues(loginArr);
}
}
var page = 1;
while(true) {
const url = "https://api.github.com/orgs/{Your_Organizations}/outside_collaborators?per_page=100&page=" + page;
const response = UrlFetchApp.fetch(url,option);
const datas = JSON.parse(response);
let loginArr = [];
if(datas.length == 0) {
break;
} else {
page++;
for (var data of datas) {
let id = data.login;
loginArr.push([ id, "outside_collaborators"]);
}
//スプレッドシートに書き込み
Members_sheet.getRange( Members_sheet.getLastRow()+1,1, loginArr.length, loginArr[0].length).setValues(loginArr);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment