LoginSignup
11
8

【SharePoint】Graph APIでサイトID, ドライブID, アイテムIDを調べる方法

Last updated at Posted at 2021-10-27

やりたいこと

Graph APIからSharePoint APIを使いたいが、そこで必要な サイトIDドライブID (各種ID)を調べたい

前提条件

  • ログインしているユーザーが各種IDを取得してくるドライブやファイル/フォルダの閲覧以上の権限を持っていること
  • Microsoft Graph Explorer が使用できること

事前準備

各種IDのざっくりとした説明

SharePointではサイトごとに存在するドライブやフォルダ、ファイルなど
それぞれにユニークな値が付与されており、〇〇〇-idと呼ばれるものが複数登場します。
1つのSharePointサイトに サイトID が割り当てられ、そのなかにdriveが存在し、
driveの中にフォルダ/ファイルが存在しているような感じです。
そのため、各種IDを取得するためにまずは一番上のサイトIDから探し、そのあと ドライブID , アイテムID も取得していきます

作業の流れ

サイトIDを取得する

Graph APIでクエリを実行します
<検索したい値>をSharePointサイト名に置き換えてGraph APIを実行します。

クエリURL
https://graph.microsoft.com/v1.0/sites?search=<検索したい値>

レスポンスのJSONが返ってきて、目的のSharePointサイトのvalueを探します。
サイトIDidの値であるcontoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FEに該当します。

GraphAPI応答のプレビュー
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#sites",
    "value": [
        {
            "createdDateTime": "<日付>",
            "description": "<説明文>",
            "id": "contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE",
            "lastModifiedDateTime": "<日付>",
            "name": "<URLに使用されるサイト名>",
            "webUrl": "<SharePointのURL>",
            "displayName": "<SharePointの表示で使用されるサイト名>",
            "root": {},
            "siteCollection": {
                "hostname": "contoso.sharepoint.com"
            }
        }
    ]
}

ドライブIDを取得する

➀で取得したサイトIDを使って次はドライブIDを取得します
<サイトID>の値を当てはめてクエリを実行します

クエリURL
https://graph.microsoft.com/v1.0/sites/<サイトID>/drive

参考 : サイトのドキュメント ライブラリを取得する - Microsoft Graph

ドライブIDはidの値になります。

応答のプレビュー
{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives/$entity",
    "createdDateTime": "<日付>",
    "description": "",
    "id": "<ドライブID>",
    "lastModifiedDateTime": "<日付>",
    "name": "ドキュメント",
    "webUrl": "https://contoso.sharepoint.com/sites/folderName",
    "driveType": "documentLibrary",
    "createdBy": {
        "user": {
            "displayName": "<ユーザー名>"
        }
    }
    ...
}

アイテムIDを取得する

ドライブ内のアイテムのうち、ここではまずドライブのルートに存在するファイル/フォルダのアイテムIDを取得してみます

クエリURL
https://graph.microsoft.com/v1.0/drives/<➁で取得したドライブID>/items/root/children

JSONの記載は省きますが、レスポンスで返ってきたJSONのvalueに、ファイルとフォルダの情報が配列で含まれています。
そこに存在するidがアイテムIDになります。

ルートフォルダ以外のアイテム(フォルダ/ファイル)のアイテムIDを探したい場合、
上記のやり方では面倒なので、ほかのクエリを使用します。

クエリURL
https://graph.microsoft.com/v1.0/drives/<➁で取得したドライブID>/root/search(q='<ドライブ内で検索したい値>')

正しく検索ができていれば、レスポンスのJSONからアイテムIDが分かるはずです。

補足

Microsoft Graphを実行したときに権限エラーで怒られた場合、下記の権限設定がされている必要があるかもしれません。実行したいAPIのURLを入力した後に、青色の権限編集ボタンを押すと、実行するために必要な権限が表示されるため、必要なもの(すべて必要なわけではないと思います)に赤枠のところから権限委任をしておいてください。
Microsoft Graphがログインユーザーの代わりにAPI実行するのを許可しているのだと思います。

image.png

11
8
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
11
8