LoginSignup
2
2

More than 3 years have passed since last update.

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

Posted at

概要

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を確認します。
image.png
下記の表示例でいえば、赤線で囲まれた値「3b3b3b」がキーワード検索で使用する文字列となり、後述の実行プログラムの「SiteGet_URL」の最後の定義する文字列となります。
image.png
これで事前準備が完了しました。

実行するプログラム

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 エクスプローラー

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2