Graph API の transitiveMembers の制限を調べてみた

はじめに

Microsoft Graph API で、セキュリティグループなどのグループのメンバーを推移的に取得する(ネストされたグループのメンバーまで取得する)方法として、transitiveMembers を利用する方法があります。

この一見便利そうな API ですが、実は困った制限があるそうで、その動きを押さえておこうと思って調べてみました。

題材となるセキュリティグループ

この記事では以下のセキュリティグループを使って検証をしています。 下図赤枠の通り、メンバー数は2001名で、このグループの下に500名のメンバーを含むセキュリティグループが2つと、直接のメンバーが1001人います。

読了時間: 1分

Visual Studio Code Remote - Containers と Docker による SharePoint Framework 開発環境構築

はじめに

SharePoint Framework 開発環境に Docker を利用することによる利点は数多くありますが、プロジェクト作成後に Docker を使うための事前作業を行う必要がありました。 この事前作業が SharePoint Framework のバージョンによって異なったりするため、かなり骨の折れる作業でした。 ここまで手間をかけてまで Docker を使う必要があるのか・・・と悩んだりもしましたが、ここにきて良い解決策が見つかりました! それが今回紹介する Visual Studio Code の拡張機能である「Remote- Containers」です。 この拡張機能を使うことで Docker を使うための煩わしい事前作業を無くすことができるため、Docker を使った SharePoint Framework 開発環境がこれまでよりも簡単に構築できるようになります。 より手軽に Docker の恩恵が受けられるようになるので、複数人開発や複数環境向けの開発を行っている場合は、ぜひこの拡張機能を利用してみてください。 この記事では、Remote - Containers と Docker を使った SharePoint Framework 開発環境構築の手順を説明します。

読了時間: 4分

サイトテンプレートによるモダンサイトのテンプレート化とサイト作成 その3:既存サイトのテンプレート化

はじめに

モダンサイトのサイトテンプレート機能により、サイトの構造をテンプレート化して横展開することが可能となります。 このサイトテンプレート機能の使い方を複数回に分けて紹介します。

今回は作成済みのサイトからサイトテンプレートを作成する方法を記載します。

既存のサイトからサイトテンプレートを作成する方法

既存のサイトからサイトテンプレートを作成するには、まず初めにサイトスクリプトを作成します。 サイトスクリプトは PowerShell の「Get-SPOSiteScriptFromWeb」コマンドレットを使用することで、既存サイトから自動作成することができます。

Connect-SPOService -Url [SharePoint 管理センターの URL]
# サイトスクリプトファイルを自動作成
# IncludedListsパラメータにはサイトスクリプトに含めたいリストの URL を指定
$template = Get-SPOSiteScriptFromWeb `
-WebUrl [テンプレートサイトのURL] `
-IncludeBranding `
-IncludeTheme `
-IncludeRegionalSettings `
-IncludeSiteExternalSharingCapability `
-IncludeLinksToExportedItems `
-IncludedLists ("Shared Documents", "Lists/List", "SitePages")
$template | Out-File [サイトスクリプトファイルのフルパス.xml]

上記コマンドでサイトスクリプトを作成後、以下のコマンドでサイトテンプレートにサイトスクリプトを登録します。

読了時間: 1分

サイトテンプレートの種類を表す「サイトテンプレート ID」

はじめに

サイトデザインを作成する場合、サイトテンプレート ID を指定する必要があります。 ところがこのサイトテンプレート ID が特にどこにも一覧化されておらず指定する値が分かりづらいため、プログラムを作って調べてみました。 調べるためのサンプルコードと現時点のサイトテンプレート ID の一覧をまとめました。

サイトテンプレート ID 取得のサンプルコード

CSOM を使って、サイトテンプレート ID を取得するコートは以下の通りです。

using System;
using System.IO;
using Microsoft.SharePoint.Client;
using OfficeDevPnP.Core;
namespace EnumSPTemplate
{
class Program
{
static void Main(string[] args)
{
try
{
var file = new StreamWriter(args[1]);
var auth = new AuthenticationManager();
using (var context = auth.GetWebLoginClientContext(args[0]))
{
var templates = context.Site.GetWebTemplates(1041, 15);
context.Load(templates);
context.ExecuteQuery();
file.WriteLine("ID\tDisplayCategory\tTitle\tName\tDescription\tIsRootWebOnly\tIsSubWebOnly\tIsHidden");
foreach (var item in templates)
{
file.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}",
item.Id, item.DisplayCategory, item.Title, item.Name, item.Description, item.IsRootWebOnly, item.IsSubWebOnly, item.IsHidden);
}
file.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}

サイトテンプレート ID の一覧

今後追加される可能性もありますが、現時点のサイトテンプレート ID の一覧は以下の通りとなります。

読了時間: 4分

SharePoint Framework での SharePoint REST API 呼び出し (async/await 編)

はじめに

別記事にて、 SharePoint Framework の SPHttpClient による SharePoint REST API 呼び出しで Promise を使った場合のパターンについて記事を書きましたが、今度は Promise を使わず、TypeScript の async/await を使ったパターンについて書きたいと思います。

async/await を使った SharePoint REST API 呼び出しのサンプル

GET 処理

概ね以下のようなコードになるかと思います。 ちなみにこの例は、指定のリストの指定のアイテム ID のアイテムについて列を指定してデータを取得するものとなります。

読了時間: 2分

SharePoint Framework での SharePoint REST API 呼び出し (Promise 編)

はじめに

SharePoint Framework にて SharePoint REST API を呼び出す方法について、Promise チェーンを書く際にあまりにも煩雑に感じた部分があったので、その点を解消するための自分なりのやり方をメモしました。

Promise を使った SharePoint REST API 呼び出しのサンプル

GET 処理

概ね以下のようなコードになるかと思います。 ちなみにこの例は、指定のリストの指定のアイテム ID のアイテムについて列を指定してデータを取得するものとなります。

読了時間: 2分

ページプレースホルダーの事前領域確保の効果

はじめに

SharePoint Framework v1.10 で実装されたプレースホルダーの事前領域確保の効果を確認してみました。

ページプレースホルダーとは

SharePoint Framework 拡張機能であるアプリケーションカスタマイザーのページプレースホルダーを使用することで、すべてのモダンページに共通のヘッダーとフッターを追加することができます。 ですが、ページプレースホルダーはモダンページのレンダリングの順序において比較的遅めにレンダリングされるため、SharePoint 標準のヘッダーとコンテンツの領域が表示された後に、SharePoint 標準ヘッダーの下にページプレースホルダーによるヘッダーが挿入される動きが目で見て分かってしまいます。 SharePoint Framework v1.10 では、このちょっとカッコ悪い動きを改善するため、ページプレースホルダーの事前領域確保の設定ができるようになりました。 ページプレースホルダーの詳細は、Docs を参照してください。

効果

事前領域確保の有無の違いが分かるように両方で動画を撮ってコマ送りにして比べてみました。 SharePoint 標準のヘッダーの下に青色のブロックがありますが、こちらがページプレースホルダーのヘッダーの部分、下部の灰色のブロックがフッターの部分になります。 上の動画が事前領域確保無し、下の動画が事前領域確保有りです。 事前領域確保無し 事前領域確保有り 比べてみると効果は一目瞭然。 事前領域確保無しの方は、ページのタイトル部分がヘッダーの表示のタイミングで下にずれ込むのが分かります。 動画をコマ送りで見ると、ページプレースホルダーの事前領域確保をした場合、下図の通りブランクの領域(横線が入った部分)がページプレースホルダーの表示領域としてあらかじめ確保される動きになっていました。