こんにちは!今日は、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 Token
- GITHUB_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プロジェクトをより効率的に管理していきましょう!
リポジトリ
参考サイト



 
  
  
  
  

コメント