2022年6月

2022年6月27日 (月)

ホームページの復活

以前下記の記事で Microsoft 365 SharePoint サイトのホームページを不意に削除してしまった場合の対処方法について書きました。

SharePoint - ごみ箱のURLを覚えておこう (SharePoint Technical Notes) (weblogs.jp)

ただし、この方法は既定の Home.aspx  を削除してしまった場合の話でした。

ですが、Home.aspx ではないページをホームページに指定していて、かつ、ついうっかり複数のサイトページを一括して削除して待ったという場合はどうしよう? 

もちろん、削除したページすべてを復元するという荒療治もできますが、不要なファイルは復活させたくないものです。そもそも、ホームページに設定していたページはどれなのか。これを探るには SharePoint REST API や PowerShellコマンドを使えばわかるのですが、もっと簡単に確認したい。

一番手っ取り早いのはやはり SharePoint REST APIを使う方法なのですが、コーディングは不要で単純にWebブラウザーで次のURLを指定します。

https://<サイトのURL>/_api/web

既定のホームページ

これでサイトの情報が XML形式で取得でき、ブラウザー上に表示されます。この中の「<d:WelcomePage>SitePages/"ページ名"</d:WelcomePage>」を見つけ出すと、これがサイトのホームページです。

上記の例では "後から作ったホーム.aspx" となっています。

後はこのファイルのみをごみ箱から復元すればよいわけです。

 

SharePoint のドキュメント ライブラリにはOneDrive へのショートカットを作成する機能が用意されています。これと OneDrive 同期アプリ を併用する場合は注意が必要です。

2022-06-26_10-33-56

OneDrive へのショートカットを作ると、文字通り OneDrive for Business にショートカットが作成されます。このショートカット内にあるドキュメント ライブラリ内のファイルも同期されるようになります。つまり、OneDrive同期アプリでの同期先を変更することなく、SharePoint サイト内のファイルを同期することができる手軽さがあります。しかし、OneDrive 同期アプリが同期できるファイル数の推奨される上限数は 30万ファイルまでとなっています。

➡️Restrictions and limitations in OneDrive and SharePoint (microsoft.com)

これはもし個人のOneDriveも同期しているならこれも合算した数です。実質、OneDrive 同期アプリは for Business も個人用も同じエンジンをローカルで動作させているためこの上限も共有することになります。

ですから、やみくもに SharePoint サイトのドキュメント ライブラリを同期してしまうと、あっという間にファイル数の上限に達してしまう可能性があるわけです。その点に注意しましょう。

二重同期の問題

うっかりドキュメント ライブラリも同期し、OneDrive へのショートカットも作成してしまったとしたら? どうなるでしょうか。

これを行うと二重の同期となり、正常に同期が行えなくなることが起こるようです。ショートカットを利用するのか、もしくはSharePoint ドキュメント ライブラリを直接同期しないのかいずれかにしましょう。

OneDrive 同期アプリの二重同期

ドキュメント ライブラリ側で同期をさせないようにするには?

ライブラリ単位で同期を禁止する設定も可能です。ライブラリの詳細設定で「オフライン クライアントの使用制限」を"いいえ" にすることで、OneDrive 同期アプリによる同期はできなくなります。

2022-06-26_10-28-36

この設定により、ライブラリの「同期」メニューも非表示になります。

既定値では同期は可能で操作メニューに表示される
既定値では同期は可能で操作メニューに表示される
同期なし
同期しないように設定したため同期メニューが表示されなくなる

ところでこのように設定したライブラリのショートカットを OneDrive に追加した場合は、同期はどうなるのでしょうか?

試すとエラーとなります。同期ができないように設定しているライブラリであるため当該ショートカットの削除を促されます。

同期エラー

2022年6月20日 (月)

ことの経緯は2021年の後半あたりから。気が付くと私が使っている Microsoft 365 テナントの1つでSharePoint 管理センターの API アクセスページが正常に表示されなくなる問題が起きていることに気が付きました。ここは SharePoint Framework で開発をする際に Microsoft Graph API を利用するときに使う大事な場所です。

エラーのメッセージは次の通り。

「Could not retrieve Global Service Principal ID Error: Error: {}」

2022-01-17_17-46-54

GUI がだめなら PowerShell から試してみようとアクセスするのですが「 Directory.AccessAsUser.All の OAuth アクセス許可が見つかりませんでした」というエラーメッセージが表示され、こちらからもアクセスできません。

2022-01-19_10-22-06

まず、アクセス許可を解決しないとどうにもならないのですが、なにをどうしたらよいものか。

色々と調べてみると同じような状況にあっている人が世界中に何人かいることがわかりましたが、解決できた人もいればそのままだったり。さて、同じような問題を抱えている方の多くがたどり着くのが下記の記事のようです。

SharePoint Online- Bad service principal breaks SharePoint Admin API Access “Global Service Principal ID Error: Error: {}” Resolved – Solving SharePoint Issues – Eric Schrader (eschrader.com)

残念ながらこの記事とは現象が異なっていたので、この方法では解決しなかったのですが多くのヒントを得ることがで来ました。

SharePoint 管理センターの APIアクセスのページと大きく関わりがあるのが Azure AD 側のエンタープライズアプリケーションであり、次の2つが関わってきます。

2022-05-26_17-19-01

  • SharePoint Online Client Extensibility Web Application Principal
  • SharePoint Online Client Extensibility Web Application Principal Helper

ちなみに、この2つのアプリは SharePoint 管理センターの API アクセスページにアクセスする際に、初回に基本的に自動生成されるもので本来は何も設定は必要ありません。

ということでこの2つにターゲットを絞りました。まず末尾に Helper とついているアプリを削除して、自動的に再作成するのを待ってみましたがこれでも状況は変わらず。

幸い、正常に動作している別のテナントが手元に3つほどあったのでこれと徹底的に比較しようと。でまずは、AccessAsUser.All を解決する必要があります。それぞれで API のアクセス許可の設定を比較してみます。すると、末尾に Helper とついている方がアクセス許可が全く構成されていません。

2022-06-19_15-29-46
正常な状態
2022-05-26_17-19-57
エラーが発生しているアプリ

ということで、このアプリのマニフェストを見てみるとエラーのあるアプリでは下記の部分がすっかり抜け落ちている。これを書き足すと正常に戻りました。

2022-05-26_17-24-58

この赤枠部分の signInAudience 属性に "AzureADMyOrg" という値が格納されていますが、これによって、現在のアプリケーションでサポートされるアカウントが決まります。

Azure Active Directory のアプリ マニフェストについて - Microsoft identity platform | Microsoft Docs

以上。なぜ、こうした状況になったのかは不明ですが、私の環境では何とかエラーを解決したので、この記事を共有することにしました。

同じ状況が発生する頻度は低いでしょうが、困っている人がいるかもしれない。もちろん、まったく同じ原因ではないかもしれないし問題解決できないケースもあるでしょうが、一縷の望みを託しておこうと。

参考になれば幸いです。

2022年6月18日 (土)

座談会-min

2022/6/16 に Microsoft MVP の有志による一夜限りの座談会を開催しました。

座談会: Microsoft Teams のファイル管理について語ろう! - connpass

平日の夜遅い時間にも関わらずイベントにご参加いただきました皆様ありがとうございました。今回はチャットも行いたいということで参加者数に上限を設たのですが、当初は300名ほどの定員で十分おつりがくるくらいだろうと思っていたのですが蓋を開けてみれば450名を超える方々にご登録いただきました。補欠枠が出てしまったことは大変心苦しく思っております。ただ、そこに対して録画を後で見るからとキャンセル待ちの方に席を譲ってくださった方もいて、皆様の温かい気持ちには本当に感謝いたします。

さて、なんといっても今回の私の思い付きでやろうということになった座談会に快くご協力いただいた登壇者の皆様、ありがとうございました。

また、座談会当日に会議チャットを盛り上げてくれた Microsoft MVP 仲間の太田さん ( Ota Hirofumi Microsoft Teams 踏み込み活用術(@hrfmjp)さん / Twitter) もありがとうござました!

イベントでは夜遅くまで私の主人も裏方として協力してくれました。ありがとう

録画

さて、ということで当日ご参加いただいて復習したい方、当日やむなくご参加いただけなかった皆さまに録画を公開いたしました。何かお役に立てばと思います。

資料

座談会で使った資料も共有します。資料は一部訂正しております("編集"アクセス許可レベルが追加されたのは SharePoint Server 2013 でした!) 

なお、今回のイベントは一夜限りであり、今のところ次回の開催予定は全くありません。より詳しく知りたい方は弊社研修へのご参加をお待ちしております

【オフィスアイ株式会社】Microsoft 365 関連研修コース (office-i-corp.jp)

座談会の内容の補足

Teams 内のチャットでファイルをアップロードすると自分の OneDrive for Business にアップロードされ共有リンクが生成されます。共有リンクの機能自体は SharePoint でも OneDrive for Business でも共通で共有リンクは4種類あります。

  • すべてのユーザー … 外部共有をサイトで許可していると選択できる
  • 組織内のすべてのユーザー… 同じテナント内のユーザー全員という意味で、組織内の全員と共有できるリンク
  • 既存のアクセス権を持つユーザー … 従来からあるリンクで、他の共有リンクとは少し趣が異なる。サイトやライブラリ単位での権限をベースにリンクを生成するため、このリンクが不用意に知られても実質サイトやライブラリの権限で保護される
  • 特定のユーザー… 共有相手として名指しのユーザーらとだけ共有できるリンク
2022-06-18_8-12-28
共有リンクのオプション

組織の既定値はたいてい「組織内のすべてのユーザー」となっているのでチャットでのファイル共有もこの設定のリンクが作られることが多いです。ただし自分で共有リンクの種類は変更できます。下記の記事でも触れているので併せてどうぞ。

座談会の話の中で共有リンクの有効期限の話がありましたが有効期限が指定できるのは、あくまでも「すべてのユーザー」の共有リンクを使う時で、このタイプだと社内、社外ともに文字通りだれでも閲覧もしくは編集(編集オプションをオンにしている場合のみ)ができるわけです。このタイプの共有リンクを生成するときだけ有効期限を指定できます。ですが、そうそう社外共有はできないようになっており、サイト単位で許可しないとこのリンクは生成できないようになっています。ですから、いつでも有効期限が設定できるわけではない。場合によるわけです。

社外向けにも利用できる「すべてのユーザー」タイプの共有リンクを使えるようにする場合は、利用者に対して有効期限について説明をしっかり行い、ついでにこの4つのオプションの違いも説明できるようにしておくのが良いと思います。OneDrive for Business の場合は、基本的には次の3つを使うことになります。

  • すべてのユーザー  ※許可されていれば
  • 組織内のすべてのユーザー
  • 特定のユーザー

「既存のアクセス権を持つユーザー」はSharePointサイト向けで、権限管理に詳しくないと利用は難しいため除外しています。これに加え、チャットでの共有は「チャットに参加しているユーザー」というリンクオプションも追加されます。

2022-06-15_17-54-06
チャットにアップロードしたファイルの共有リンクオプション

いずれにしても座談会で話たように、「外部向けのリンクには有効期限を設ける」ことができるようになっているように、そもそもこうした共有リンクはあくまでもその場ですぐに閲覧してもらいたいときのもので、長く利用するものではないということが強調できるといいと思います。もちろん、外部向けのリンクが利用できない場合はこうした説明は難しいですが。

座談会の中では、個人的には「すべてのユーザー」以外でも「組織内のすべてのユーザー」や「特定のユーザー」に対する共有リンクも有効期限をつけられるようになれば「一時的なものである」という意識づけがしやすいなぁと強く思ったのですが、実際のところ「すべてのユーザー」共有リンクだけしかこうした設定がないのが悩ましいところです。

本座談会に関連する過去の記事もぜひ、あわせてご一読ください。

 

2022年6月16日 (木)

拙著の「ひと目でわかる Microsoft 365 SharePoint 運用管理編」の 第5章で扱っているファイルのバージョン管理について訂正があります。手元の第1刷だとP384 ~ P385 あたりの内容です。

ドキュメント ライブラリではバージョン管理の設定があります。チームサイトとコミュニケーションサイトで軽微ではありますが違いがあります。

これまでてっきり、どちらのサイトもまったく同じだと思い込んでしまっていたのですが、昨日何気なく研修中にデモを行っていて気が付きました

違いは次の通りです。

設定 チームサイト コミュニケーションサイト
バージョン管理しないよう設定する × (必ずバージョン管理する)  〇 (無効化できる)
保持できるメジャーバージョン数 100~50,000     1~50,000

チームサイトの場合の設定画面は次の通りです。

2022-06-15_13-51-15

コミュニケーションサイトの場合の設定画面は次の通りです。

2022-06-15_13-55-22

なお、バージョン管理を有効化できるかどうかと保持できるバージョン数のみに違いがあるだけで、それ以外は基本機能は同じです。

このようにコミュニケーションサイトではバージョン管理そのものを無効化できますが、これを行うとライブラリの復元機能が使えなくなるので注意してください。