Python による Microsoft Graph API を利用し、Teams Lists の Site-ID と List-ID を取得してみました


概要

Microsoft Graph API を利用して Teams Lists の Site-ID と List-ID を取得するための Python プログラムです。
手順は、以下となります。
①.Teams Lists の作成(リスト名)
②.その Lists のサイト情報の取得
③.リスト名とサイト情報から、作成した Temas Lists の Site-ID と List-ID を取得

なお、Access Token の取得については、このプログラム を使用しています。

実行環境

macOS Big Sur 11.1
python 3.8.3

Temas Lists の作成

このサイトを参照 にして、リストを一から作成します。
このとき、「空白のリスト」を選択し、リスト名には「UList(任意)」を設定します。このリスト名は後述の実行プログラムの「SPS_LISTNAME」で定義します。

作成した Teams Lists 情報からSite-IDを取得するための情報を取得します。

このサイト に記載されている「キーワードで検索」する方法を使用するために、作成した Teams Lists の検索名を取得します。
下記画面にあるように、上部メニューから、「SharePointで開く」を選択し、新たに表示されたブラウザ画面のURLを確認します。

下記の表示例でいえば、赤線で囲まれた値「3b3b3b」がキーワード検索で使用する文字列となり、後述の実行プログラムの「SiteGet_URL」の最後の定義する文字列となります。

これで事前準備が完了しました。

実行するプログラム

GetTeamsSiteIDListID.py

import json
import os
import requests
import argparse
import time
import pprint
from datetime import datetime, timedelta, date
from GetAzureAccessToken import get_azure_access_token  # Azureアクセスのためのアクセストークンの取得オリジナル関数


# Teams Lists Info(リスト名の定義)
SPS_LISTNAME = 'UList'

# TeamsListのサイトURL
SiteGet_URL = 'https://graph.microsoft.com/v1.0/sites?search=3b3b3b'


# SiteIDとListIDの取得
def get_siteID_listID(access_token):
    # Microsoft Graphを実行するためのヘッダ情報
    headers = {
        'Authorization': 'Bearer %s' % access_token
    }

    # SiteID取得のGetリクエスト
    res1 = requests.get(
        SiteGet_URL,
        headers=headers
    )
    # requrest処理をクローズする
    res1.close

    # res1をjsonファイルに整形
    res1json = res1.json()
    # print(res1json)

    # 必要数分のListIDを取得する
    for i, row in enumerate(res1json['value']):
        # 結果からSiteのIDとNameを取得する。
        SiteID = res1json['value'][i]['id']
        SiteName = res1json['value'][i]['name']

       # ListIDを取得するためのURLを生成する
        ListGet_URL = "https://graph.microsoft.com/v1.0/sites('" + SiteID + \
            "')/lists?$filter=displayName eq '" + SPS_LISTNAME + "'"
        print(ListGet_URL)

        # ListID取得のGetリクエスト
        res2 = requests.get(
            ListGet_URL,
            headers=headers
        )

        # requrest処理をクローズする
        res2.close

        # res2をjsonファイルに整形
        res2json = res2.json()

        # 結果からListIDを取得する
        ListID = res2json['value'][0]['id']

        # 結果からSiteIDとListIDを表示する
        print(SiteName + ' : SiteID  : ' + SiteID)
        print(SiteName + ' : ListID  : ' + ListID)

    return



if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Teams Lists の SiteID と ListID を取得する')
    args = parser.parse_args()

    start = time.time()

    # アクセストークンの取得
    access_token = get_azure_access_token()

    # SiteIDとListIDの取得
    get_siteID_listID(access_token)

    get_time = time.time() - start

    print("")
    print("取得時間:{0}".format(get_time) + " [sec]")
    print("")

プログラムの実行

最初にヘルプを表示してみます。

$ python GetTeamsSiteIDListID.py -h
usage: GetTeamsSiteIDListID.py [-h]

Teams Lists の SiteID と ListID を取得する

optional arguments:
  -h, --help  show this help message and exit

では、「SiteGet_URL」でキーワード検索される Teams Lists の SiteID と ListID を取得してみます。
プログラム内の print文を参照に以下の結果を確認ください。

$ python GetTeamsSiteIDListID.py
https://graph.microsoft.com/v1.0/sites('hogehogecorp.sharepoint.com,4b4b4b4b-b5e3-4c53-a05b-9c9c9c9c9c9c,b7b7b7b7-2ade-4d1e-bba1-f3f3f3f3f3f3')/lists?$filter=displayName eq 'UList'
msteams_3b3b3b : SiteID  : hogehogecorp.sharepoint.com,4b4b4b4b-b5e3-4c53-a05b-9c9c9c9c9c9c,b7b7b7b7-2ade-4d1e-bba1-f3f3f3f3f3f3
msteams_3b3b3b : ListID  : a5a5a5a5-3d71-4f79-ab1d-9b9b9b9b9b9b

取得時間:4.309984922409058 [sec]

参考情報

以下の情報を参考にさせていただきました。感謝申し上げます。

Microsoft Graph API でSharePointのサイトIDを調べる方法

Microsoft Graph を使ってみよう : Graph エクスプローラー