カテゴリ「Microsoft 365 - SharePoint」の360件の投稿 Feed

2023年1月26日 (木)

SharePoint サイトのコンテンツを一括管理したい場合などに便利なのが PnP PowerShell です。オープンソースのコミュニティが提供しています。

本記事では PnP PowerShell の概要とインストール方法に関するリファレンスをまとめておきます。

概要

もともとSharePoint PnP (Patterns & Practices : パターンズ アンド プラクティス) イニシアティブというものがあり、Microsoft 社のコンサルタントのメンバーが 2013 年に設立したのが始まりでオープンソースの技術コミュニティです。Microsoft 社以外からも Microsoft MVP などの有志が積極的にメンバーとして貢献していますし、誰でも Contributerとして立候補もできます。

なお、このコミュニティはのちに SharePoint Developer Community という名称となり、現在は SharePoint だけでなくMicrosoft 365 全般にわたり活動しているため Microsoft 365 Platform Comunity (PnP) という名称になっています。

コミュニティでは GitHub 上で様々なガイダンス、コードサンプルや便利なツールなどを公開しています。

SharePoint PnP PowerShell 

Microsoft 365 のSharePoint の管理者が利用する SharePoint Online Management Shell も PowerShell コマンドレットを提供していますが、こちらは SharePoint テナントレベルでの管理者権限が必要であり、また SharePoint 管理センターレベルの設定を行うためのコマンド群です。サイトコレクションの管理、サイトデザインやサイトスクリプトの登録、SharePoint ハブの登録や解除などがありますが、サイトごとのコンテンツ管理までは行えません。

一方でSharePoint PnP PowerShell はもともと SharePoint Client Side API を用いたコマンドレットであり、サイトの管理者がコンテンツ管理を行えるようになっています。

👑PnP PowerShell (推奨)

従来は SharePoint に特化していた SharePoint PnP PowerShell ですが改善を続けています。現在は SharePoint 以外にも Microsoft Teams, Microsoft Planner, Power Automate などでも利用できるようになっており、名称も「SharePoint」を冠から外し単に「PnP PowerShell」と呼ぶようになっています。

PnP PowerShell はクロスプラットフォームの PowerShell モジュールとなっており、非常に多くのコマンドレッドが用意されています。この新しいモジュールは SharePointPnPPowerShellOnlineモジュールの後継となっており、従来のモジュールはすでにメンテナンスされなくなっています。新しいモジュールはクロスプラットフォーム対応となっているため Windows だけでなく、MacOSや Linux 上でも実行できます。ただし、クロスプラットフォームとして利用する場合は対象は SharePoint だけがサポートされます。

詳しくは下記のサイトを参照してください。

🔗 PnP PowerShell | PnP PowerShell

インストール方法

さて、インストールですが PowerShell 7.x を使用することが推奨されています。実際、PowerShell 5.x を使っていたとしても一部のコマンドは利用できますが、経験上エラーとなることもしばしばあるため PowerShell 7.x をインストールするようにしましょう。

インストール手順は下記の情報を参照してください。

🔗 Windows への PowerShell のインストール - PowerShell | Microsoft Learn

インストール自体は基本的には次のコマンドで行えます。

Install-Module -Name PnP.PowerShell

ただし、認証に関する設定も必要になるため注意が必要です。PnP PowerShellでは、テナントへの認証情報を使って認証することができます。ただし、基盤となる SDK の変更により、認証が可能な Azure AD アプリケーションを最初に登録する必要があります。

複数の方法が用意されており、組織によって適切な手順がことなります。詳しくは下記のページで確認してください。ちなみに、一番簡単なのは「Register-PnPManagementShellAccess」コマンドを実行することです。これで済むのが一番。。。

🔗 Authentication | PnP PowerShell

PnP PowerShellの最新版は PowerShell Gallery で確認できます。

🔗 https://www.powershellgallery.com/packages/PnP.PowerShell/

2023年1月13日 (金)

移行の話の続きです。

SharePoint ページなどにStream (クラシック) 上のビデオへのリンクを追加しているケースも多いと思います。

移行ツールによる移行後は、しばらくの間、旧リンクにアクセスすると新しいコンテンツの場所へとリダイレクトしてくれます。ただし、このリダイレクトも Microsoft Stream (クラシック) 廃止後から1年間のみで期限は 2025年2月15日までです。それまでに修正しておかないとリンク切れが多発することなります。

SharePoint ページでは Stream 用のWebパーツが用意されていましたが、Stream (on SharePoint) のコンテンツを埋め込む場合は、ファイルビューアーWebパーツを用います。当該ユーザーにリンクの差し替えを依頼するなどの対応も考えておく必要があります。

移行ツールは SharePoint管理者または Stream 管理者しか利用できません。

そのため必要に応じて各ビデオの所有者に依頼して自分で必要なものは手動でダウンロードし、適切な SharePoint サイトまたは OneDrive for Business 上に再度アップロードしてもらい、Webパーツの再設定なども依頼しておくとよいでしょう。

ユーザーには手間を書けますが、移行ツールで一括すると案外不要なコンテンツもそのまま持っていくことになることもあります。大量のデータの場合はやはりツールを使うべきですが、対応するユーザーが担当するコンテンツの量がさほど多くないようであれば、手間がかかる分、取捨選択もすることになると思います。ついでの整理整頓の機会にもなるように思います。ビデオが古くなっていたら、この際、新規に作り直そうか、というきっかけづくりにもなるかもしれません。

なお、移行ツールで移行したコンテンツをさらに手動で別の場所に移動させてしまうと、さすがにそこまでは追いかけてはくれないため、やはりリダイレクトはできなくなります。こうした点も注意しましょう。

※補足: このページのタイトルを「Microsoft Stream (on SharePoint)への移行スケジュールを把握しよう!」から「Microsoft Stream (クラシック) の廃止日決定 ⇒ 2024年2月15日」に変更しました。

※補足: 当初はクラシック Stream の完全廃止日は、2024/2/15が期限だったが、その後、期限が延期され 2024/4/15 に変更されました。

昨年、Microsoft Stream (on SharePoint) の移行スケジュールについてブログを公開しました。

SharePoint Technical Notes : Microsoft Stream (on SharePoint)への移行スケジュールを把握しよう! (lekumo.biz)

年明けが明けて、昨日の2023/1/12 付で Microsoft 365 のメッセージセンターにいよいよ Stream (クラシック) の廃止日がアナウンスされました。

20230113_103539

主なマイルストーンは次の通りです。

  • 廃止日: 2024/2/15 ⇒ 2024/4/15 に延期
  • Stream (クラシック) への新規アップロードの停止日:  2023/9/15
  • Stream (クラシック) へアクセスできなくなる日: 2023/10/15 (延長措置をしていれば、2024/4/15 が期限)

公式情報は下記を確認してください。

Overview of migrating from Microsoft Stream (Classic) to Stream (on SharePoint) - Microsoft Stream | Microsoft Learn

※今後の予定の部分のみ画面を抜粋して追加しておきます。

20230113_104445

以前のブログにも書きましたが、移行ツールが GA された日付から 1年後にサービス廃止となる予定です。現時点では移行ツールはパブリックプレビューです。廃止日がアナウンスされたので、ここから逆算すると移行ツールの GA 日は2023/2/15 → 2023/4/15  (に延期) となるということでしょう。

B5f84c0cd7944aa8aef481fab1a2bd7d_2

ただ、予定を確認していると移行するビデオのフィルターリング機能が利用できるようになるのが 2023/6/1 となるようで、GA後も機能アップデートがされるようです。

また、上記のマイルストーンは、前回のブログにも書きましたが、あくまでも延長を行わない場合のものです。

Cc2366bcd74e4d77bfbaa0e77c5706fd

最終廃止日は変わりませんが、それ以外に関しては数か月延長できます。

Stream (クラシック) への新規アップロードの停止日」に関しては廃止日の通知日 + 3か月後となるため3か月後の 2023/5/15 が期限となっていますが、3か月延長できるため延期措置を取れば 2023/8/15 が期限です。また、「Stream (クラシック) へアクセスできなくなる日」については、廃止通知の8か月後が期限であるため 2023/10/15 が期限ですが4か月延長ができます。延長措置を取れば 2024/2/15 までが期限となり廃止日いっぱいまで利用できるようになるわけです。

詳細は公式ドキュメントを確認しておきましょう。

Stream (on SharePoint) のメリット

Stream (on SharePoint) への移行を行うことで、色々と利点が生まれます。個人的には次の点が大きいのです。

  • 社外との動画共有
  • 動画の日本語検索 (トランスクリプト検索)

現在の Stream は前身は Office 365 Videos でした。これは SharePoint をベースに作られた仕組みでしたが、社外共有ができない課題を長年持っていました。そこから Stream が登場し独自の Azure ベースのストレージを持つようになり、社外共有もできるようになるのか? と思われましたが、結局できないままとなり検索などが案外と多言語対応できなかったのです。ですが、AI を組み合わせるという仕組みが画期的でした。

そうした過去のトライアンドエラーを経て、再び SharePoint ベースの動画共有の仕組みに戻ってきたのが Stream (on SharePoint ) です。SharePoint も過去と比較すると格段に機能が豊富になり、改善・改良がくわえられてきました。そんななか今度は再び SharePoint に戻ってきたといっても、満を持して戻ってくることとなり、過去に対応できなかった様々な機能が利用できるようになります。

下記はメッセージセンターに配信された内容の日本語訳です。

  • SharePoint や OneDrive にある他のファイルと同様に、セキュリティ、管理者コントロール、マルチジオサポート、コンプライアンス(eDiscovery、法的拘束、保持、データ損失防止ポリシー)、権限、共有コントロールでビデオファイルを容易に管理できます。
  • 背景のぼかしや置き換え、インク付け、テキスト、音声のみ、テレプロンプターなど、カメラに直接搭載された高度なツールを使ってビデオを録画。
  • Microsoft 365 のどこからでもビデオを検索できます。キーワードを検索することで、Microsoft 365のあらゆる場所でビデオやTeamsの会議記録を見つけることができるようになりました。
  • Office の Stream スタートページで、必要なものをすばやく見つけられます。新しいスタートページには、最近見たビデオ、共有されているビデオ、お気に入りのビデオが表示され、プレイリストも近日公開予定です。(注: Streamのスタートページでは、Stream (Classic)のビデオは表示されません)。
  • チームミーティングの記録を、トランスクリプト、チャプター、タイムラインマーカー、発言者の属性、コメントとともに表示できます。
  • カスタムページ、サイト、ポータルを作成し、イントラネットやViva Connectionsの一部としてビデオをフィーチャーすることができます。
  • ゲスト、組織内の人、「誰でも」リンクによる認証なしの外部共有をサポートし、Microsoft 365 の他のファイルと同じように動画を共有できます。
  • 動画ごとの解析、サイト内のすべての動画の解析、動画を視聴した人の解析が可能です。
    Viva Connectionsフィードにビデオを追加します。
  • Microsoft Graph Files API をベースとした API を使用して、基本的な動画ファイルの操作を行います。

移行作業は少々面倒ではありますが、ようはうちの引っ越しと同じです。この際、使わなくなったビデオを捨て、よりよい使い勝手を得られるということで組織で計画的に取り組んでいきたいですね。

2022年12月25日 (日)

Google Console で検索ログを見ていると 「Stream 再生速度」というキーワードでの検索がよく上がってきているようなので、まとめておこうと思います。

2022年12月25日時点では、再生速度が用意されているのは Microsoft Teams 上でのオンライン会議の録画のみです。会議の録画の保存先は基本的に OneDrive (学校および職場向け) SharePoint サイトとなっています。チーム内のチャネルに対して会議を設定していない場合は、録画を開始した人の OneDrive 環境に保存されるわけです。これらに関しては再生時には次のいずれかの再生速度を指定できます。

  • 0.5x
  • 1x (既定)
  • 1.2x
  • 1.5x
  • 1.8x
  • 2x

20221225_173121

これ以外に関しては今のところ速度の変更はできません。ただし、この先 OneDrive および SharePoint サイト内のすべての動画に関して会議の録画と同じく 0.5x - 2.0x までの再生速度が選べるようになる予定です。

Microsoft 365 Roadmap 上には下記の通り新機能が開発中のステージになっており、一般提供開始予定が 2023年の2月となっています。

20221225_173726

順調に開発が進めば2023年の春までには、この機能が利用できるようになるだろうと思います。

**** UPDATE (2023/2/11) ****

ビデオ会議の録画だけでなく、通常のビデオも再生速度が変えられるようになりました! とはいえ、まだロールアウト中のテナントもあるようですが、もう間もなく使えると思います😊。

20230211_154108

2022年12月22日 (木)

この記事は Microsoft Power Automate Advent Calendar 2022 に参加しています。2022/12/22 の分です。

🎄❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️🎅

今回は開発者寄りの記事です。難易度は高めですが、年末年始の時間のある時に是非チャレンジしてみてくださいね。

これまでも Microsoft Graph API には SharePoint ページを操作するための API (beta バージョンのみ) がありましたが、 2022年11月末に新しいペーター版がリリースされました。これによりこれまでできなかった、SharePoint モダンページおよびニュース投稿の取得、作成、管理ができます。既存の pages beta API は新しい API に置き換わることになります。

私にとっては待望の API で、これが正式にリリースされて充実してくると色々とできることが増えます。

2023年4月末までにGAが予定されています。公式情報は下記を参照してください。

🔗Announcing the new SharePoint Pages API in Microsoft Graph - Microsoft 365 Developer Blog

さて、今回はこの Graph API (Pages API) を使って、以前から試してみたかった Power Apps から SharePoint ページを作成して発行してみることにします。

ただし、細かいパラメータオプションや JSON などは1つのブログに収まりきる量ではないので、今回は「読者の方が頑張って自分でちょっと試してみることができる」よう情報を簡素化にしています。ヒントとなる情報はちりばめておきますので、詳細はご自身で頑張って学習を進めてみてください。

あとは弊社のオフィスアイ ラーニング ポータル(有料サービス) には、情報を整理して公開しています。ご興味があればこちらもどうぞ。

これができると定型的なページ作成が Power Apps や Power Automate で対応できるなぁという話です。

今回のベータ版リリースの範囲

このリリースでは次の機能が提供されます。

  • ページおよびニュースコンテンツの取得
  • ページおよびニュース投稿の作成
  • ページおよびニュース投稿の削除
  • ページの一覧の取得
  • ページおよびニュースの投稿の発行

今回のスコープ外は次の通りとなっているので注意しましょう。

  • 既存ページの編集
  • ニュースリンクの生成

上記ビデオでは想定されるシナリオ例としては次のような内容を取り上げていました。

想定される利用シナリオ

シナリオ1

組織の CDN や Microsoft ストック画像、パブリックリソースにある画像とともにUX 内でページを作成して(要はどこからでも参照できる画像を使うこと)、ページの JSON を取得して、それをもとに異なるサイト間やテナント間で同じページを作成する

シナリオ2

すべてのページの一覧を取得し、特定のプロパティでフィルターしたあとでそれらのページを一括削除する

Graph エクスプローラーを使ってサイトIDを取得する

Graph API を使うにはページを作成する先のサイトのIDを取得する必要があります。Graph エクスプローラーの基本的な使い方は下記のリンク先を参照してください。

🔗 Graph エクスプローラーを使用して Microsoft Graph API を試す - Microsoft Graph | Microsoft Learn

まず Graphエクスプローラーにアクセスします。

🔗 Graph Explorer | Try Microsoft Graph APIs - Microsoft Graph

右側の顔写真のところをクリックして、Microsoft 365 アカウントでサインインします。 

20221222_165906

始めてアクセスするときには Permissins requested のウィンドウが表示されますが、Accept ボタンをクリックします。

20221222_170127

クエリを実行するために、次の操作をします。

  1. GET アクセスになっていることを確認する
  2. beta を指定する
  3. エンドポイントを指定する
  4. Run query ボタンをクリックする

3 のエンドポイントですが、サイトのIDを取得するには次のように指定します。

[ルートのサイトコレクションの場合]

https://graph.microsoft.com/beta/sites/root

[ルートのサイトコレクション以外]

https://graph.microsoft.com/beta/sites/root:<サイトの相対パス>

サイトの相対パスは /sites や /teams から始まるパスです。私の使っているサイトは相対パスが /sites/Labo-GraphAPI であるため、これを指定します。

20221222_170406

クエリを実行した結果取得できる id をメモしておきます。後で Power Automate のフローから利用します。私のサイトの ID だと「

officeilearning.sharepoint.com,5de63e83-091f-42b2-90a2-2aeefe4ab9d7,342f6370-e776-4677-bf1e-dcc2d94985ed

」だということがわかります。

Power Apps のアプリを用意する

記事を投稿するためのアプリを用意します。この例ではキャンバスアプリでタブレットレイアウトで作成しています。

20221222_171539

類似したアプリを作ってみてください。必要な項目は次の通りです。

  • ページのタイトル
  • ページのファイル名

あとは、ページ内に書き込みたい内容をこの例では次の項目をリッチテキストのコントロールで用意しています。

  • 本文
  • 備考

作りたいページのイメージを確認しよう

作りたいページのイメージは次の通りです。今回はタイトル領域の設定やクイックリンク Webパーツ、画像Webパーツは固定で、そのほかを適宜差し替えてページを新規に作り発行します。利用する画像はストック画像であるため、どのテナントでも共通して利用できます。

20221222_171949

Power Automate フローを作る 

では Power Apps 側からフローを作成しましょう。この記事ではある程度 フローも作れることを想定しているので、手順はさほど丁寧には説明しませんのであしからず。。。(ちなみに、弊社でも Power Automate のフローの研修もやってますので、もしよければそういったものもご利用ください)。

ということで、[フローを新規作成する]をクリックします。

20221222_172208

トリガーを PowerApps (V2) に差し替え、次のように指定します。フロー名も任意に指定しておきましょう。

20221222_172706

次のステップでは変数を用意します。この変数には後ほど作成したページのIDを格納します。

20221222_172846

次のアクションに Office 365 Group コネクターの HTTP要求の送信アクションを追加します。これで Graph API を呼び出します。

URI には先ほど取得したサイトのIDを使って次のように指定します。

https://graph.microsoft.com/beta/sites/<サイトのID>/pages

メソッドは POST を指定しましょう。

20221222_173005

さて、問題が本文です。ここに指定するJSONがページ情報を決めることになります。詳しい話は色々と盛りだくさんにあるのですが、今回は、私が用意したソースを写経してみてください。下記の通りです。


     {
        "name": ".aspx",
        "title": "",
        "pageLayout": "article",
        "thumbnailWebUrl": "https://cdn.hubblecontent.osi.office.net/m365content/publish/4785e3b9-c5d0-4fac-813b-8cbc5e744eb4/thumbnails/large.jpg?file=dv735012.jpg",
        "promotionKind": "page",
        "showComments": true,
        "showRecommendedPages": true,
        "titleArea": {
            "enableGradientEffect": true,
            "imageWebUrl": "https://cdn.hubblecontent.osi.office.net/m365content/publish/4785e3b9-c5d0-4fac-813b-8cbc5e744eb4/dv735012.jpg",
            "layout": "colorBlock",
            "showAuthor": false,
            "showPublishedDate": true,
            "showTextBlockAboveTitle": true,
            "textAboveTitle": "Advent Calendar 2022",
            "textAlignment": "left",
            "imageSourceType": 2,
            "title": "Colone Page - 1",
            "imgHeight": 1360,
            "imgWidth": 2048,
            "translateX": 49.26108374384236,
            "translateY": 37.77777777777778,
            "hasTitleBeenCommitted": true,
            "serverProcessedContent": {
                "htmlStrings": [],
                "searchablePlainTexts": [],
                "links": [],
                "imageSources": [
                    {
                        "key": "imageSource",
                        "value": "https://cdn.hubblecontent.osi.office.net/m365content/publish/4785e3b9-c5d0-4fac-813b-8cbc5e744eb4/dv735012.jpg"
                    }
                ],
                "customMetadata": [
                    {
                        "key": "imageSource",
                        "value": {
                            "width": 2048,
                            "height": 1360
                        }
                    }
                ]
            }
        },
        "canvasLayout": {
            "horizontalSections": [
                {
                    "layout": "oneThirdRightColumn",
                    "id": "1",
                    "emphasis": "none",
                    "columns": [
                        {
                            "id": "1",
                            "width": 8,
                            "webparts": [
                                {
                                    "@odata.type": "#microsoft.graph.textWebPart",
                                    "innerHtml": "Body"
                                }
                            ]
                        },
                        {
                            "id": "2",
                            "width": 4,
                            "webparts": [
                                {
                                    "@odata.type": "#microsoft.graph.standardWebPart",
                                    "webPartType": "c70391ea-0b10-4ee9-b2b4-006d3fcad0cd",
                                    "data": {
                                        "audiences": [],
                                        "dataVersion": "2.2",
                                        "description": "アイコン、画像、対象ユーザーのターゲット設定のオプションを使用して、ドキュメント、画像、ビデオなどのコンテンツへのリンクのコレクションをさまざまなレイアウトで表示します。",
                                        "title": "クイック リンク",
                                        "properties": {
                                            "isMigrated": true,
                                            "layoutId": "CompactCard",
                                            "shouldShowThumbnail": true,
                                            "imageWidth": 100,
                                            "hideWebPartWhenEmpty": true,
                                            "dataProviderId": "QuickLinks",                                         
                                            "items@odata.type": "#Collection(graph.Json)",
                                            "items": [
                                                {
                                                    "thumbnailType": 3,
                                                    "id": 1,
                                                    "description": "",
                                                    "altText": "",
                                                    "rawPreviewImageMinCanvasWidth": 32767,
                                                    "sourceItem": {
                                                        "@odata.type": "#graph.Json",
                                                        "itemType": 2,
                                                        "fileExtension": "",
                                                        "progId": ""
                                                    }
                                                }
                                            ],
                                            "listLayoutOptions": {
                                                "@odata.type": "#graph.Json",
                                                "showDescription": false,
                                                "showIcon": true
                                            },
                                            "buttonLayoutOptions": {
                                                "@odata.type": "#graph.Json",
                                                "showDescription": false,
                                                "buttonTreatment": 2,
                                                "iconPositionType": 2,
                                                "textAlignmentVertical": 2,
                                                "textAlignmentHorizontal": 2,
                                                "linesOfText": 2
                                            },
                                            "waffleLayoutOptions": {
                                                "@odata.type": "#graph.Json",
                                                "iconSize": 1,
                                                "onlyShowThumbnail": false
                                            }
                                        },
                                        "serverProcessedContent": {
                                            "htmlStrings": [],
                                            "searchablePlainTexts": [
                                                {
                                                    "key": "title",
                                                    "value": "参考"
                                                },
                                                {
                                                    "key": "items[0].title",
                                                    "value": "ペンギン - Wikipedia"
                                                }
                                            ],
                                            "links": [
                                                {
                                                    "key": "baseUrl",
                                                    "value": "/sites/Labo-GraphAPI"
                                                },
                                                {
                                                    "key": "items[0].sourceItem.url",
                                                    "value": "https://ja.wikipedia.org/wiki/%e3%83%9a%e3%83%b3%e3%82%ae%e3%83%b3"
                                                }
                                            ],
                                            "imageSources": [
                                                {
                                                    "key": "items[0].rawPreviewImageUrl",
                                                    "value": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/African_Penguin_at_Boulders_Beach_1.jpg/1200px-African_Penguin_at_Boulders_Beach_1.jpg"
                                                }
                                            ],
                                            "componentDependencies": [
                                                {
                                                    "key": "layoutComponentId",
                                                    "value": "706e33c8-af37-4e7b-9d22-6e5694d92a6f"
                                                }
                                            ],
                                            "customMetadata": [
                                                {
                                                    "key": "items[0].rawPreviewImageUrl",
                                                    "value": {
                                                        "fixedwidth": "100",
                                                        "mincanvaswidth": "32767"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                },
                                {
                                    "@odata.type": "#microsoft.graph.standardWebPart",
                                    "webPartType": "d1d91016-032f-456d-98a4-721247c305e8",
                                    "data": {
                                        "audiences": [],
                                        "dataVersion": "1.11",
                                        "description": "画像、ピクチャ、または写真をテキストを重ねたページに追加し、画像のトリミングやサイズ変更を行うことができます。",
                                        "title": "画像",
                                        "properties": {
                                            "imageSourceType": 2,
                                            "captionText": "",
                                            "altText": "",
                                            "linkUrl": "",
                                            "overlayText": "",
                                            "fileName": "崩落する氷山.jpg",
                                            "imgWidth": 3015,
                                            "imgHeight": 2410,
                                            "alignment": "Center",
                                            "fixAspectRatio": false,
                                            "overlayTextStyles": {
                                                "@odata.type": "#graph.Json",
                                                "textColor": "light",
                                                "isBold": false,
                                                "isItalic": false,
                                                "textBoxColor": "dark",
                                                "textBoxOpacity": 0.54,
                                                "overlayColor": "light",
                                                "overlayTransparency": 0
                                            }
                                        },
                                        "serverProcessedContent": {
                                            "htmlStrings": [],
                                            "searchablePlainTexts": [],
                                            "links": [],
                                            "imageSources": [
                                                {
                                                    "key": "imageSource",
                                                    "value": "https://cdn.hubblecontent.osi.office.net/m365content/publish/e452fe45-b705-4a5a-aebd-e92f74c2553f/1152450154.jpg"
                                                }
                                            ],
                                            "customMetadata": [
                                                {
                                                    "key": "imageSource",
                                                    "value": {
                                                        "width": "3015",
                                                        "height": "2410"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                }
                            ]
                        }
                    ]
                },
                {
                    "layout": "oneColumn",
                    "id": "2",
                    "emphasis": "neutral",
                    "columns": [
                        {
                            "id": "1",
                            "width": 12, 
                            "webparts":[
                                {
                                    "@odata.type": "#microsoft.graph.textWebPart",
                                    "innerHtml": "Notes"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    }

name と title プロパティに動的なコンテンツを指定します。

20221222_180124

次の図に示す"innerHtml"の値を Body から動的コンテンツ置き換えます。

20221222_174733_3

クイックリンク Webパーツの部分のサイトの相対パスを自身のサイトのものに書き換えます。

20221222_174554_3

下の方にある "innerHtml" のプロパティの値を Notes から動的コンテンツに書き換えます。

20221222_174923_2

次のステップとして JSON の解析アクションを追加します。コンテンツに指定する「本文」はひとつ前のステップの出力結果です。20221222_175035

スキーマは下記の内容をコピーして貼り付けましょう。


{
    "type": "object",
    "properties": {
        "@@odata.context": {
            "type": "string"
        },
        "@@odata.etag": {
            "type": "string"
        },
        "eTag": {
            "type": "string"
        },
        "id": {
            "type": "string"
        },
        "lastModifiedDateTime": {
            "type": "string"
        },
        "name": {
            "type": "string"
        },
        "webUrl": {
            "type": "string"
        },
        "title": {
            "type": "string"
        },
        "pageLayout": {
            "type": "string"
        },
        "thumbnailWebUrl": {
            "type": "string"
        },
        "promotionKind": {
            "type": "string"
        },
        "showComments": {
            "type": "boolean"
        },
        "showRecommendedPages": {
            "type": "boolean"
        },
        "createdBy": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "properties": {
                        "displayName": {
                            "type": "string"
                        },
                        "email": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "lastModifiedBy": {
            "type": "object",
            "properties": {
                "user": {
                    "type": "object",
                    "properties": {
                        "displayName": {
                            "type": "string"
                        },
                        "email": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "parentReference": {
            "type": "object",
            "properties": {
                "siteId": {
                    "type": "string"
                }
            }
        },
        "contentType": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "publishingState": {
            "type": "object",
            "properties": {
                "level": {
                    "type": "string"
                },
                "versionId": {
                    "type": "string"
                }
            }
        },
        "reactions": {
            "type": "object",
            "properties": {}
        },
        "titleArea": {
            "type": "object",
            "properties": {
                "enableGradientEffect": {
                    "type": "boolean"
                },
                "imageWebUrl": {
                    "type": "string"
                },
                "layout": {
                    "type": "string"
                },
                "showAuthor": {
                    "type": "boolean"
                },
                "showPublishedDate": {
                    "type": "boolean"
                },
                "showTextBlockAboveTitle": {
                    "type": "boolean"
                },
                "textAboveTitle": {
                    "type": "string"
                },
                "textAlignment": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "authors@odata.type": {
                    "type": "string"
                },
                "authors": {
                    "type": "array"
                },
                "authorByline@odata.type": {
                    "type": "string"
                },
                "authorByline": {
                    "type": "array"
                },
                "imageSourceType": {
                    "type": "integer"
                },
                "imgHeight": {
                    "type": "integer"
                },
                "imgWidth": {
                    "type": "integer"
                },
                "translateX": {
                    "type": "number"
                },
                "translateY": {
                    "type": "number"
                },
                "hasTitleBeenCommitted": {
                    "type": "boolean"
                },
                "serverProcessedContent": {
                    "type": "object",
                    "properties": {
                        "htmlStrings": {
                            "type": "array"
                        },
                        "searchablePlainTexts": {
                            "type": "array"
                        },
                        "links": {
                            "type": "array"
                        },
                        "imageSources": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "key": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "key",
                                    "value"
                                ]
                            }
                        },
                        "customMetadata": {
                            "type": "array",
                            "items": {
                                "type": "object",
                                "properties": {
                                    "key": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "object",
                                        "properties": {
                                            "width": {
                                                "type": "integer"
                                            },
                                            "height": {
                                                "type": "integer"
                                            }
                                        }
                                    }
                                },
                                "required": [
                                    "key",
                                    "value"
                                ]
                            }
                        }
                    }
                }
            }
        }
    }
}

次のステップで pageId 変数に JSON解析の出力から id を設定します。20221222_175224_2

次のステップで再び Office 365 Group コネクターの HTTP要求アクションを追加します。これでページを発行します。URIは次の通りです。

https://graph.microsoft.com/beta/sites/<サイトのID>/pages/<ページのID>/publish

20221222_175329_2

最後に Power Apps コネクターの応答アクションを追加しておきます。20221222_175555_2

Power Apps からフローを呼び出す

Power Apps アプリ内に用意しておいたボタンコントロールからフローを呼び出します。OnSelect プロパティには例えば次のように指定します。

UpdateContext({Result:'ページ作成(PagesAPIprev)'.Run(TextInput_Page_Title.Text,TextInput_Page_Name.Text,
RichTextEditor_Body.HtmlText,RichTextEditor_Notes.HtmlText).response});
Notify(Result,NotificationType.Success)

20221222_182032

動作を確認する

アプリをプレビュー実行して動作を確認しましょう。

それでは、Happy Holidays !!