- TaskSphere:GitHubプロジェクトの認証と情報取得
- TaskSphere:GitHubのプロジェクト管理機能を使ってアイテム情報を取得しよう
- TaskSphere:GitHubプロジェクトのフィールドIDを取得するPythonスクリプト
- TaskSphere:GitHub プロジェクトにドラフトIssueを追加する Python スクリプト
- TaskSphere:GitHub プロジェクトの情報を取得・更新する Python スクリプト
こんにちは!今日は、GitHubのプロジェクトからフィールドのIDを取得するPythonスクリプトについて説明します。このスクリプトは、GitHubのAPIを使用してプロジェクトの情報を取得し、プロジェクト内のフィールドのIDを表示します。
デモ動画
続きの記事書きました!フィールドIDも取得完了
---
TaskSphere:GitHubプロジェクトのフィールドIDを取得するPythonスクリプト https://t.co/dDm8RQvZm5 https://t.co/3oDhjhhUEU pic.twitter.com/CknT3W7A19— Maki@Sunwood AI Labs. (@hAru_mAki_ch) May 2, 2024
前提条件
このスクリプトを実行するには、以下の条件が必要です。
- PythonがインストールされていることTêrmcolorとArtライブラリがインストールされていること
- GitHubのPersonal Access Tokenを取得していること
- 環境変数に以下の値を設定していること
GITHUB_PERSONAL_ACCESS_TOKEN
: GitHubのPersonal Access TokenGITHUB_USER_LOGIN
: GitHubのユーザーログイン名GITHUB_PROJECT_NUMBER
: 対象のGitHubプロジェクトの番号
スクリプトの説明
では、スクリプトの内容を詳しく見ていきましょう。
必要なライブラリのインポート
import os
import requests
from termcolor import colored
from art import *
このセクションでは、スクリプトで使用するライブラリをインポートしています。os
はファイル名を取得するため、requests
はGitHub APIにHTTPリクエストを送信するため、termcolor
とart
は出力を装飾するために使用します。
環境変数の取得
token = os.environ.get("GITHUB_PERSONAL_ACCESS_TOKEN")
user_login = os.environ.get("GITHUB_USER_LOGIN")
project_number = os.environ.get("GITHUB_PROJECT_NUMBER")
ここでは、環境変数からGitHubのPersonal Access Token、ユーザーログイン名、プロジェクト番号を取得しています。これらの値が設定されていない場合は、エラーメッセージを表示してスクリプトを終了します。
GraphQLクエリの定義
query_project = """
query {
user(login: "USER_LOGIN") {
projectV2(number: NUMBER) {
title
id
}
}
}
"""
query_fields = """
query {
node(id: "PROJECT_ID") {
... on ProjectV2 {
fields(first: 20) {
nodes {
... on ProjectV2Field {
id
name
}
... on ProjectV2IterationField {
id
name
configuration {
iterations {
startDate
id
}
}
}
... on ProjectV2SingleSelectField {
id
name
options {
id
name
}
}
}
}
}
}
}
"""
このセクションでは、GitHub APIに送信するためのGraphQLクエリを定義しています。最初のクエリquery_project
は、プロジェクトのタイトルとIDを取得するためのものです。2番目のクエリquery_fields
は、プロジェクト内のフィールドの情報を取得するためのものです。
プロジェクト情報の取得
query_project = query_project.replace("USER_LOGIN", user_login)
query_project = query_project.replace("NUMBER", project_number)
data_project = {
"query": query_project
}
response_project = requests.post("https://api.github.com/graphql", headers=headers, json=data_project)
ここでは、query_project
内のプレースホルダーを実際の値に置き換え、GitHub APIにPOSTリクエストを送信してプロジェクト情報を取得しています。レスポンスからプロジェクトのタイトルとIDを取得し、それらを表示します。
フィールド情報の取得
query_fields = query_fields.replace("PROJECT_ID", project_id)
data_fields = {
"query": query_fields
}
response_fields = requests.post("https://api.github.com/graphql", headers=headers, json=data_fields)
ここでは、query_fields
内のプレースホルダーを実際のプロジェクトIDに置き換え、GitHub APIにPOSTリクエストを送信してフィールド情報を取得しています。
フィールド情報の表示
fields = response_fields.json()["data"]["node"]["fields"]["nodes"]
print(colored("Fields:", "magenta"))
for field in fields:
print(colored(f"- {field['name']}", "yellow"))
print(colored(f" ID: {field['id'][:4]}XXXXXXXXXX", "cyan"))
if "options" in field:
print(colored(" Options:", "green"))
for option in field["options"]:
print(colored(f" - {option['name']}", "yellow"))
print(colored(f" ID: {option['id']}", "cyan"))
if "configuration" in field:
print(colored(" Iterations:", "green"))
for iteration in field["configuration"]["iterations"]:
print(colored(f" - Start Date: {iteration['startDate']}", "yellow"))
print(colored(f" ID: {iteration['id']}", "cyan"))
最後に、取得したフィールド情報を表示しています。各フィールドの名前とIDを表示し、単一選択フィールドの場合は選択肢の名前とID、繰り返しフィールドの場合は各繰り返しの開始日とIDを表示します。
まとめ
以上が、GitHubプロジェクトのフィールドIDを取得するPythonスクリプトの説明でした。このスクリプトを使用することで、GitHubのAPIを通じてプロジェクトの情報を取得し、プロジェクト内のフィールドのIDを簡単に取得することができます。
フィールドのIDを知ることは、プロジェクトの自動化やデータの更新を行う際に非常に重要です。このスクリプトを活用して、GitHubプロジェクトをより効率的に管理していきましょう!
コメント