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

2020年4月20日 (月)

Microsoft Teams 内の各チームには[ファイル]タブが用意されています。このファイルタブの実体は SharePoint サイトです。

もっというと、チーム内の[ファイル]タブは SharePoint サイト上にある「ドキュメント」ライブラリ内のチャネルごとに生成されるフォルダーが紐づいています。しかし、Teams の[ファイル]タブは、SharePoint の標準的な機能の一部が実装されていません。もちろん、あくまで[ファイル]タブ経由で利用するとという限定的な話であり、[ファイル]タブのコマンドバーから "SharePoint で開く" をクリックすることで、Webブラウザーから直接 SharePoint のライブラリにアクセスすれば、標準機能がフルに利用できます。

Teams 内から SharePoint サイトにアクセスする

※補足 : Teams がリリースされて間もないころはSharePoint が持つファイル管理機能のごく基本的な機能のみしか提供されていなかったのですが、数か月前からだいぶ SharePoint のオリジナルの持つ機能に近づいては来ています。

そのため、今回のブログのタイトルにあるような Power Automate を使った承認フローを実装するには、少し工夫が必要です。

Webブラウザーから直接SharePointサイトを利用するときには、格納しているファイルに対して承認フローを開始する方法としてはファイルのプロパティを確認し、例えば "下書き" から "公開" といった値に変更したときに承認フローを自動的に開始できるようにすることも少なくありません。しかし、[ファイル]タブでは現時点(2020/4/18)ではプロパティを編集できません。さらに、手動でワークフローを開始するにもフローを手動開始するコマンドメニューがありません。SharePoint 標準では本来はできることです。

そこで、[ファイル]タブを使ってフローを開始するのであれば、手動開始とプロパティの値をトリガーにすることはあきらめる必要があります。「ファイルを新規に作成したら」という自動的にフローが開始されるトリガーを使うのが妥当でしょう。

例えば、[ファイル] タブ内の特定のフォルダーにファイルを移動したらフローが開始されるというような実装を考えます。ただここで問題なのが、SharePoint コネクターのトリガーによってはサブフォルダーからはフローが開始されないものがあるということ。[ファイル]タブはサブフォルダーに紐づいているので、ここが重要なのです。

以上のことから、トリガーには次のいずれかを使うようにします。このトリガーはサブフォルダーでも動作します。

  • ファイルが作成されたとき(プロパティのみ)
  • ファイルが作成または変更されたとき(プロパティのみ)

自動開始を前提とするので、フローを起動したときに承認者を選択させることができないので、最初から承認者を固定で指定しておくか、上司の自動取得をするなど何かしら工夫をしておく必要があります。

ところで、トリガーを設定するときですが、SharePoint サイトとの関係が把握できていないとどのフォルダーをトリガ―指定すればよいのか迷うところです。チャネルとフォルダーの関係を図解しておくと次のようになります。トリガーを構成するときには、この図を念頭に置いたうえで、チーム名と同じ名前の SharePoint サイトのURLとフォルダーを指定するようにしましょう。

Teams 内のチャネルとSharePointフォルダーの関係

なお、チャネルを最初に作ったときに(もっと正確にいうと、チャネルを作成後に[ファイル]タブに初回アクセスしたときに生成) SharePoint側にフォルダーが作成されるのですが、フォルダー生成後はチャネル名を変更しても既存のフォルダ名は変更されません。そのため、現在 Teams 内のファイルタブには関連づいているフォルダー名が表示されるようになっているので、これを手掛かりにするとよいでしょう。

Teamsファイルタブにひもづくフォルダー名

以上を踏まえ、最もシンプルな承認フローを構築すると次のようになります。ここでは細かい設定については触れませんが、詳細は例えば、既存の承認用のテンプレートを使いトリガー部分を差し替えるなどしてみてください。

承認フロー

 

【研修】SharePointユーザーのための Power Apps & Power Automate入門

AdobeStock_194043476対象者は SharePoint サイトの基本的な操作や用語が理解できている方で、Power Automate や Power Apps を使った業務改善などを検討している方です。

SharePoint Onlineでは組織全体で使用する Office テンプレート ファイルを集中管理できます。これには「組織のアセットライブラリ(Organization Assets)」を利用します。

組織のアセット ライブラリについては以前、このブログでも紹介しています。

これを利用することで、デスクトップ版のOffice アプリケーションで新規にファイルを作成する際に、組織名とともにテンプレートが表示されるようになります。残念ながら Web版やモバイル版では利用できません。

組織のアセットライブラリ - Office Templates

このテンプレートは SharePoint Online の全体管理者が指定したSharePointのドキュメントライブラリから取得しています。つまり、デスクトップ版のOffice アプリケーションにサインインするときに指定したアカウントに紐づく SharePoint 上のアセットライブラリが自動的に取得されるということです。PC を入れ替えてもいつでも組織のテンプレートを利用できるということです。また、テンプレートの管理は一般的な SharePoint のドキュメント ライブラリであるため、ファイルのアップデートも簡単です。

なお、このライブラリにテンプレートをアップロードするときには、必ずテンプレートファイル形式でファイルを保存する必要があります。PowerPoint であれば *.potx です。

ところで、大事な設定方法ですが、管理者はテンプレートを格納するライブラリを組織のアセットライブラリとして指定するには次のPowerShellコマンドを実行する必要があります。-OrgAssetType を OfficeTemplateLibrary に設定するところがポイントですね。

#変数

$LibraryUrl="https://<アセットライブラリに指定したいライブラリのURL>"
$OrgAssetType="OfficeTemplateLibrary"
$CdnType="Private"

#組織のアセットライブラリの設定
Add-SPOOrgAssetsLibrary -LibraryUrl $LibraryUrl -OrgAssetType $OrgAssetType -CdnType $CdnType
2020年4月 3日 (金)

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 !!

2020年3月16日 (月)

前回の記事の続きです。

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

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

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

多言語機能を有効化する

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

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

ページの翻訳

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

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

翻訳の依頼メール

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

翻訳の比較

 

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

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

2020年3月14日 (土)

現在、新型コロナウィルス(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 ハブ」を組み合わせた、モダンポータルサイト構築の方法について学習します。詳しくはお問合せください。