Microsoft 365のグループライセンスベースの割当ってとても便利なんですが、購入ライセンス数が足りていないことに気が付かず、ユーザーからの問い合わせ等によってあわてて追加ライセンスを購入するみたいなことがあったりしますよね?(しますよね?圧)
グループライセンス割当がエラーとなっていた場合には、Slack等に通知して状態を把握したいと思います。
設定
アプリの登録をする
いつも通り(?)Entra IDでアプリの登録から新規でアプリを作成します。
Entra管理センタ→「アプリケーション」→【アプリの登録】→【新規登録】
名前は適当につけてください。Lic_GroupErrorCheckとか適当に
APIアクセス許可を付与する
Group.ReadAll権限が必要になるので、「APIのアクセス許可」→【アクセス許可の追加】
「Microsoft Graph」→「アプリケーションの許可」→[Group.Read.All]にチェックを入れ、【アクセス許可の追加】をクリック

シークレットキーを発行する
マネージドID等を利用するとよりセキュアにできると思いますが、GAS等から実行したい場合には、シークレットキーを発行し、シークレットキーを利用して後続の処理を実行します。
「証明書とシークレット」→【新しいクライアントシークレット】をクリック
「説明」と「有効期限」を設定し、【追加】をクリック
表示されたシークレットキーを控えておきます。
APIを実行して、JSONを処理する
以下のGraph APIを利用するとエラーになっているグループ一覧を取得することができます。
https://graph.microsoft.com/v1.0/groups?$filter=hasMembersWithLicenseErrors eq true
エラーが発生している場合、以下のような応答が返ってきます。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups",
"@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET groups?$select=assignedLabels,assignedLicenses",
"value": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"deletedDateTime": null,
"classification": null,
"createdDateTime": "2025-04-07T03:05:15Z",
"creationOptions": [],
"description": "M365E5ライセンス",
"displayName": "Lic_M365E5",
"expirationDateTime": null,
"groupTypes": [],
"isAssignableToRole": null,
"mail": null,
"mailEnabled": false,
"mailNickname": "xxxxxxx-4",
"membershipRule": null,
"membershipRuleProcessingState": null,
"onPremisesDomainName": null,
"onPremisesLastSyncDateTime": null,
"onPremisesNetBiosName": null,
"onPremisesSamAccountName": null,
"onPremisesSecurityIdentifier": null,
"onPremisesSyncEnabled": null,
"preferredDataLocation": null,
"preferredLanguage": null,
"proxyAddresses": [],
"renewedDateTime": "2025-04-07T03:05:15Z",
"resourceBehaviorOptions": [],
"resourceProvisioningOptions": [],
"securityEnabled": true,
"securityIdentifier": "S-1-12-1-xxxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxxx",
"theme": null,
"uniqueName": null,
"visibility": null,
"onPremisesProvisioningErrors": [],
"serviceProvisioningErrors": []
}
]
}
あとはこのJSONを好きなように整形して通知させるようにすればOKですね。
通知先に通知する
GASでもPythonでもPower Automate、Logic Apps、Zapier、make等お好きなものを利用して、利用しているコミュニケーションツールに通知を送ってみてください。
まとめ
ゼロタッチキッティング等でユーザーにセットアップを任せている場合、以下のようなエラー画面に遭遇することがあります。
これはIntuneライセンスがないとか、MDMユーザースコープ設定がおかしい等が多いですね。

グループベースのライセンス割り当ては便利な反面、ライセンス残等を気にせずグループに割り当ててるから大丈夫だろうとやってしまいがちですよね。
ユーザーからの申告で気づくのではなく、ライセンスエラーがで発生しているグループを毎日確認して自動通知させることで、ライセンスを事前に購入する等ができるようにしておくと、ユーザーからの問い合わせや対応工数等減らせるかもしれません。
グループベースライセンスで、ライセンスを割り当てている場合には是非真似してみてください。