"Office 365 / SharePoint Online" にカテゴリー登録されている194 投稿

[Power Automate] SharePoint リストアイテムの一括コピー

Power Automate を使ってリスト内のアイテムを一気に他のリストに移動させたいということもあります。しかし、残念なことに、SharePoint Designer で開発するワークフローには存在していた「アイテムのコピー」というアクションは SharePoint コネクターにはありません。

一つ断っておくとすると、SharePoint Designer での開発はサイトを越えた処理は基本的にはできず、SharePoint REST API を使うなどしていましたので、もともとそう高機能だったというわけでもありません。

話を戻しましょう。

Power Automate の場合は元のアイテムのデータをもとに新しいリストにアイテムを新規に作成するという、コピー作成を行うことになります。「移動」にしたければ最後にアイテムを削除すればよい。

まずは機能検証するためにコピーまでとし、元のリストアイテムの削除はしません。これを実現する最も手軽な方法は、次の SharePoint コネクターのアクションを使うことです。

  • 複数の項目の取得 (Get items)
  • 項目の作成 (Create an item)

さて、複数のアイテムがあるのでこれを一気にコピーしたいのですが、とりあえず手動でフローをトリガーしてやることにします。処理が終わったらMicrosoft Teams にチャットメッセージを投稿するようにします。以上を踏まえると以下のようなフローの組み立てがシンプルです。

Bulk List Item Copy 1

さて、フローをテスト実行し、手動開始してみます。今回、元のリストには1,000件以上のアイテムがあります。が、試すと Apply to each では 100件までしか処理していないことが分かります。

Bulk List Item Copy 2

さて、なぜこうなっているのか? 

昔から SharePoint の一括操作(バルク処理)は100がしきい値というのはおなじみのところであり、SharePoint の API もクエリを使って取得するデータの上限は既定値が 100 というのもよくある話。さて、これはどこの設定が関わっているのか確認してみましょう。

先ほどの「複数の項目の取得」の詳細オプションを確認すると「上から順に取得」という項目あります。英語だと Top Count という項目です(英語の方が分かりやすい...)。SharePoint の開発をしたことのある方なら、ここでピンとくるかもしれません。これが要はREST API の引数の $top に当たるわけです。これが既定値のままだと、100アイテムを取得するという既定の動作となるのです。

Bulk List Item Copy 3

この値を2000ほどに変更しておくと、今度は1,000件以上のアイテムが取得できました。

Bulk List Item Copy 6

なお、「上から順に取得」で指定できる上限は SharePoint は一度の呼び出しで最大  5,000までしか取得できません。

そして このアクションのあとに Apply to each を使用しますが、 Office 365 およびフリーのライセンスでは5,000までしか対応していません。これ以上の値を指定したい場合は Power Automate per flow または per user (もしくは Plan2 か Plan1)が必要になります。有料プランであれば上限は100,000 になります。

このことについては詳しくは下記に記載されているので一度目を通しておきましょう。

さて、5,000以上指定したい場合は、上記のライセンスを持っているのであれば、「複数の項目の取得」アクションの設定から、改ページ (Pagination) のしきい値をたとえば20,000などに指定します。

Bulk List Item Copy 4

Bulk List Item Copy 5

改ページをオンにすることで、しきい値の指定がなければすべてのアイテムを、もしくはしきい値があればその値に達するまで呼び出しを続けるようになります。「改ページ(Pagination)」に関しては次のブログに記載されています。

Do Until の利用

ところで Power Automate per user や per flow などの有料プランを持っていない場合に対処方法はあるのか?

Do Until を使う方法であれば、これをクリアできそうです。たとえば、上限である5,000アイテムずつ繰り返し取得して行くというアプローチが取れるようになります。ただし、フローは若干、複雑になります。

まず変数の準備。次のように変数を用意します。

Bulk List Item Copy 7

次に Do Until を挿入します。条件は ItemEmpty が true になるまで。

あとはこのコンテナの中に「複数の項目の取得」アクションと「項目の作成」アクションを挿入します。

Bulk List Item Copy 8

「複数の項目の取得」アクションの設定で改ページをオンにします。しきい値は5,000にしておきます。

Bulk List Item Copy 9

また「複数の項目の取得」アクションのフィルター条件に TargetItemID の値以上を指定します。

Bulk List Item Copy 10

Do Until コンテナ内の処理の続きとして条件を指定します。

Bulk List Item Copy 11

条件は「empty(body('複数の項目の取得')?['value'])」が true です。

「はい」のときは ItemEmpty を true に設定し、「いいえ」のときは TargetItemIDの値に「複数の項目の取得」アクションで取得した最後のIDを格納します。式は次の通り。

last(body('複数の項目の取得')?['value']).id

このIDを使ってスライディングウィンドウを作るイメージです。

全体像は次の通りです。

Bulk List Item Copy 12

謝辞および参考資料

Power Automate を使って SharePoint のアイテムを一括で処理するところで悩んでいたところ、それを Twitter でつぶやいたら Yellow11(@br_Yellow11) さんが助け舟を出してくださいました! 

Do Until の利用か! なるほど、と思い、いろいろと調べていたところ、細かいところが分かったので、忘れないうちに記事にしようと思い立ったわけです。

また、海外の方が書かれている下記の記事も見つけることもでき、これを含めて今回の日本語の記事にまとめました。

How to get more than 5000 items from SharePoint Online in Flow

皆さんのおかげです😀

Pay it forward !!


SharePoint Online を使った危機管理サイト (Crisis Communication) -2-

前回の記事の続きです。

出来上がったサイトは既定の言語が英語になっていますし、コンテンツも英語です。これを現在ロールアウト中の Multilingual Page Publishing (多言語ページ発行)機能を使って日本語化してみましょう。※テナントによってはまだこの機能が利用できない可能性があります。

公式資料は下記のリンク先に公開されています。

この機能はコミュニケーションサイトでしか利用できません。チームサイトでは利用できないので注意してください。

多言語機能を有効化する

まずサイトの管理者はサイトの設定ページから多言語機能を有効化します。次のビデオで手順を説明しています。この例では既定の言語が英語になっているため、日本語を新たに追加し、翻訳者を一人指名しています。ちなみに、以前はMUI(多言語ユーザーインタフェース)という設定で第二言語を指定できるだけでしたし、モダンサイトはSharePoint Onlineがサポートしているすべての言語が第二言語として追加されていました。この設定画面が新しいものに置き換わっています。もちろん、引き続きMUIとしての機能は動作します。MUI については下記を参照してください。

この設定を有効にすることでサイトページ(ニュースを含む)は翻訳ができるようになります。

ページの翻訳

翻訳の作成を行うと、指定した言語用に現在のページのコピーが作成されます。このコピーを翻訳者が適宜翻訳していきます。

余談ですが翻訳ページを作成すると、先ほど指定した翻訳者にメールが送信されるようになっています。これをきっかけに担当者は翻訳を開始できるわけです。

翻訳の依頼メール

なお、Delve のユーザープロファイル設定で指定している優先言語によってメニューなどの表示も自動的に切り替わります。下記は英語優先にしているユーザーがアクセスしているところです。メニュー等も英語表示になっていることが分かります。

翻訳の比較

 

【オフィスアイ株式会社】SharePoint Online モダン ポータルサイトのサイト設計・デザイン・展開 ワークショップ

本研修では 「コミュニケーション サイト」や 「SharePoint ハブ」を組み合わせた、モダンポータルサイト構築の方法について学習します。詳しくはお問合せください。


SharePoint Online を使った危機管理サイト (Crisis Communication) -1-

現在、新型コロナウィルス(COVID-19) が世界中に広まっていますが、危機管理においても迅速な情報共有が必要になっています。

これは在宅でも、出社していても関係なく、誰もがどこからでも必要な情報を得られるようにする意味で重要です。

Crisis Communication Site

SharePoint Online上に危機管理サイトを素早く構築できるように Microsoft 社は「CRISIS COMMUNICATIONS」という名前でテンプレートを公開しています。英語のみではあるものの、参考になる部分も多いように思います。

Crisis Communications Site

SharePoint look book

このテンプレートが公開されているのが、SharePoint Look book というサイト。

このサイトは、SharePoint モダンサイトのショールーム的な位置づけであり、複数のモダンサイトの例が公開されています。

SharePoint look book

SharePoint Look book

さらに SharePoint look book に公開されている各サイトは、Office 365 テナント管理者であれば自分で管理するテナントにそのまま展開できるようになっています。

サイトのプロビジョニング

弊社の SharePoint Online 上に追加してみたので、手順を紹介しましょう。SharePoint look book サイトにアクセスし、Crisis Communicationサイトのページにアクセスしたら「Add to your tenant」をクリックします。

「Add to your tenant」をクリックしたら次に表示される画面は以下の通り。メールアドレスなどの情報を指定します。既定ではログインユーザーの情報が自動的に指定され、サイト名なども自動的に設定されます。メールアドレスは、サイトのプロビジョニングが終わったところでメール通知される先を指定します。ちなみに、プロビジョニングに係る時間はだいたい5分程度です。サイトのタイトルやURLは必要に応じて変更します。もちろん、どちらも後から変更は可能です。

Crisis Communication Site - 1

画面をスクロールダウンすると、Theme が指定できるようになっています。

カスタムテーマを持っていれば、あらかじめ適用したいテーマを指定しておけます。私のテナントは研修用も兼ねているのでカスタムテーマを複数登録しているので、その中から「海松茶」のテーマを指定してみました。最後に「Provision」ボタンをクリックします。Crisis Communication Site - 2

前提条件を満たしているかどうか確認されます。

Crisis Communication Site - 3

何がプロビジョニングかが表示されますが、簡単に言えばサイトコレクションが新たに作られるよといったことが書かれています。「Confirm」をクリックします。

Crisis Communication Site - 4

プロビジョニングが開始されます。完了まで、おおよそ5分程度かかります。

Crisis Communication Site - 5

完了したら、サイトのURLにアクセスするとテンプレート通りのサイトができあがっています。

Crisis Communication Site 6

Crisis Communication Site - 7

実際のサイトは次のような構成になっています。ナビゲーション上のラベルの多くは名称のみで、リンク先は各自で設定するようになっています。

Yammer のWebパーツ部分は画像イメージが配置されており、実際には自社内のYammer グループのフィードを追加することになります。

長くなってきたので、記事を分割します。

次回は、日本語化などを補足しましょう。

 

【オフィスアイ株式会社】SharePoint Online モダン ポータルサイトのサイト設計・デザイン・展開 ワークショップ

本研修では 「コミュニケーション サイト」や 「SharePoint ハブ」を組み合わせた、モダンポータルサイト構築の方法について学習します。詳しくはお問合せください。


[SharePoint Online] リストやライブラリの新機能 (Feb 2020)

今日確認できているだけで、結構な数の新機能が展開されてきています。対象リリースのテナントには順次ロールアウトされている模様です。

まずは、ビューの書式はこれまでJSONを記述する必要がありましたが、新しい簡易設定として「交互の行のスタイル」という設定ができるようになりました。

試しに列の書式と一緒に使ってみましたが、キチンと両方が反映されるようになっています。

2020-02-05_22-32-25

それから、リストおよびライブラリのフォームも、列の表示・非表示や順番の入れ替えも簡単に行えるようになっています。

こういった操作の簡単さになれると、本当にクラシックなSharePointサイトには戻れませんね。


[SharePoint Online] リストやライブラリの新機能 (Feb 2020)

今日確認できているだけで、結構な数の新機能が展開されてきています。対象リリースのテナントには順次ロールアウトされている模様です。

まずは、ビューの書式はこれまでJSONを記述する必要がありましたが、新しい簡易設定として「交互の行のスタイル」という設定ができるようになりました。

試しに列の書式と一緒に使ってみましたが、キチンと両方が反映されるようになっています。

2020-02-05_22-32-25

それから、リストおよびライブラリのフォームも、列の表示・非表示や順番の入れ替えも簡単に行えるようになっています。

こういった操作の簡単さになれると、本当にクラシックなSharePointサイトには戻れませんね。