5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SharePoint リスト - フロー付きカスタム組織テンプレートの作成

Posted at

はじめに

SharePointリストでは、組織でリストテンプレートを発行することができます。
テンプレートからSharePointリストを作成することで、列の設定や書式だけでなく、リストに関連するPower Automate フローも一緒に作成することができます。

今日はその方法を、自分の備忘録がてらまとめていこうと思います!

この記事は管理者向けの記事となります。
SharePoint管理者グローバル管理者の権限が必要な操作を含みます。

関連リンク

公式を見ればすべてわかります。
この記事はそれを実際にやってみたというだけのものです!

リストの作成

まずはテンプレートとなるリストを実際に作成しておきます。
リストはなんでも良いのですが、書式設定などしっかり設定しておくと、テンプレートとしての価値が増す気がします。

image.png

ソリューションの作成

リストと一緒にテンプレートに含めたいフローをまとめるための入れ物として、ソリューションを作成します。

そのまま運用するソリューションではなく、テンプレートのために一時的にしようするものなので、既定の環境とは異なる環境で作成するようにしました。

image.png

フローの作成

用意したソリューションの中で、クラウドフローを作成します。
クラウドフローの内容にも特に制約はありませんが、保存場所には注意が必要です。
ソリューションからフローを作成する。もしくは、作成してしまったフローをソリューションに追加する必要があります。

  • ソリューション内に作成
    image.png

  • ソリューションに追加
    image.png
    image.png

今回は例として 「リストに新しい項目が作成されたときにTeamsで通知する」 フローを作成しました。
image.png

こういったトリガーやアクションで、テンプレートとなるリストを参照します。
テンプレートから作成した新しいリストでも、自動的に新しいリストを参照するフローができる、というわけです。
image.png

接続の確認

フローで使用する接続はすべて、ソリューション内に保存された接続参照である必要があります。
ソリューション内で作成したフローであれば、基本的には接続参照が使用されているはずですが、他のソリューションの接続参照が使用されていないかなど、しっかり確認しておきましょう。

image.png

image.png

ソリューションのエクスポート

下準備が終わったら、テンプレートを発行するための準備に移ります。
作成したソリューションの変更を公開し、zipファイルにエクスポートします。
image.png

image.png

image.png

エクスポートしたソリューションファイルの編集

ダウンロードしたzipファイルを一度展開し、中身を編集します。
image.png

Workflowsフォルダの中にあるJSONファイルを開いて編集します。
複数のフローをテンプレートに含めた場合は、複数のファイルがあるはずですので、それぞれ同じ手順で編集しましょう。
image.png

JSONファイルを開くと、接続の情報など、フローの詳細が定義されたファイルであることがわかります。
image.png

フローのトリガーやアクションもJSONで定義されています。
今は特定のリストが参照されているので、テンプレートとして新しく作成するリストが動的に指定できるよう、このparametersの部分を変数に置き換えます。
image.png

トリガーやアクションで複数回リストを参照している場合は、参照するすべてのトリガー・アクションを書き換えます。

dataset(サイトのURL)
{ContextSharePointSiteUrl}
table(リストのID)
{ContextSharePointListId}

image.png

書き換えたら保存し、エクスポートした時と同じ構成になるよう、編集したファイルを再度zipに圧縮します。
image.png

image.png

SharePoint管理シェルへの接続

次に、リストの定義ファイルをダウンロードし、フローを含めた組織テンプレートに発行していくのですが、これらの作業にはPowerShellを使用します。

PowerShell、SharePoint Online 管理シェルのダウンロードやモジュールのインストールは、何分見よう見まねで行ったため、詳しい手順は割愛させて下さい。

ふらりさんのまとめがとても分かりやすかったです。

SharePoint管理センターのアドレスを使用して、管理シェルに接続しておきます。
image.png
image.png

管理シェルへ接続
Connect-SPOService -Url <SharePoint管理センターのアドレス>

リストの定義ファイルの取得

次に、リストの定義ファイルを取得します。
テンプレートにしたリストのアドレスを確認し、次のコマンドを実行して、ターゲット リストからサイト スクリプト ファイル(manifest.json)を取得します。
image.png

image.png

サイト スクリプト ファイルを取得
Get-SPOSiteScriptFromList -ListUrl <リストのアドレス> | Out-File manifest.json

リストの定義ファイルの編集

取得したmanifest.jsonを開き、テンプレートにフローを含めるよう編集します。
ここでは、actionsに1つ項目を追加します。
image.png

追加するaction
{
    "verb": "importBusinessApps",
    "listName": "[[L_0001_listName]]",
    "solutionFileRelativePath": "solution.zip"
}

追加するとこんな感じです。
image.png

ここでいうlistNameは、もとからあるactionのcreateSPListと同じ値にする必要があります。
image.png

また、solutionFileRelativePathはソリューションをエクスポートし編集したファイルの相対的なパスを定義するものですが、ファイル名など、画面の通りにすすめてもらっていれば、例と同じ指定で大丈夫です。

編集が終わったら、ソリューションのエクスポートファイルと一緒にzipにまとめます。
image.png

image.png

テンプレートの発行

できたファイルを、組織テンプレートとして発行します。
PowerShellで以下のコマンドを実行し、サイト デザインで使用するための新しいサイト スクリプト パッケージをアップロードします。

サイト スクリプト パッケージのアップロード
$pkg = Add-SPOSiteScriptPackage -Title "<サイト スクリプトのタイトル>" -Description "<サイト スクリプトの説明>" -ContentPath '<作成したmanifest.zipのパス>'

実行したら結果を確認しておきましょう。
image.png

最後にリストテンプレートとして発行します。

テンプレートの登録
Add-SPOListDesign -Title "<テンプレートのタイトル>" -Description "<テンプレートの説明>" -SiteScripts $pkg.Id

image.png

テンプレートを実際に使う

これで登録が完了です。
リストの作成画面からテンプレートが確認できます。
image.png

このテンプレートを使ってリストを作成すると、確認の上、フローが作成されます。
image.png
image.png
image.png

自動的に作成されたフローを確認すると、新しく作ったリストが参照されていることが確認できます。
image.png

このフローは既定の環境に作成されたソリューション内に作成されます。
(ここはちょっと困りもの?)
image.png

おわりに

フローとリストを一緒に配布できるカスタム組織テンプレート、同じようなリストをいろんなチームで使いまわす場合などには便利だと思います。

ただし、管理者側でそこそこ大変な下準備が必要になるので、使いどころは悩ましいのかもしれません🤔

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?