迷走ITProですわな~

ITPro駆け出しによるブログ。ゆるくいきます

SharePoint Onlineにおける通知機能の補完方法

SharePointの通知にはリボンメニューから設定できる「個人用通知」と、SharePoint Designerで設定する「ワークフローのメール送信」がありますが、いずれも実際に使ってみると少し機能が足りないと感じることが多いです。
※個人用通知では、全く足りないですが・・・

私が過去に不足感を感じた用途は以下になります。

  • ワークフローを起動するタイミングが「アイテムが作成されたとき」or「アイテムが変更されたとき」しか設定できない f:id:michaelowen628:20170816205008p:plain
  • 匿名ユーザーの投稿や編集では、ワークフローの起動に失敗する

この問題に対応するために別途タスクスケジューラに対して条件に合うアイテムを「更新」するスクリプトを登録することで、SharePoint Designerで設定したワークフローを起動するようにして実現していることも多いかと思います。

オンプレミスのSharePoint Serverであればそれでいいのですが、上記の方法ではSharePoint Onlineに対応することができないです。
そこでSharePoint Onlineにおいて、上記問題を解決する方法を2点ご紹介させて頂きます。

  1. Office 365 サイト用の Azure Web ジョブ ("タイマー ジョブ") の使用の開始 | MSDN f:id:michaelowen628:20170816212652p:plain

  2. オンデマンド Flow による新しい SharePoint 通知 – MS Japan Office 365 Tech Blog f:id:michaelowen628:20170816212948p:plain

それぞれのソリューションを簡単に比較すると以下のようになります。

【価格】

  • Azure Webジョブ + SharePoint Designer
    Azure WebジョブはAzure App Serviceのコストがかかってきます。 ただ、他で利用しているAzure Web Appにのせることも可能です。

  • Microsoft Flow
    制限はありますが、多くのOffice 365ライセンスにプランが含まれています。
    プラン | Microsoft Flow

【機能】

  • Azure Webジョブ + SharePoint Designer
    SharePoint Online内で完結するのであれば、基本的にやりたいことはできます。
    Exchangeや、Skype、Dynamics等他のMicrosoft アプリと連携すると不利。
    ※Azure Webジョブ側にアップロードするスクリプトにコードを記載すれば多くのことを実現できるが、基本的にはSPDのトリガー補助を想定

  • Microsoft Flow
    SharePoint Online内で完結する場合、SPDのワークフローと比較して複雑なフローになりがちですが、機能面ではSPDにほとんど追いついていると考えられます。
    他のOffice 365アプリ等と連携する場合、とても強力です。

【運用】

  • Azure Webジョブ + SharePoint Designer
    SharePointリストと連携する等、実装を工夫することで、事前に想定される運用作業は軽減可能です。
    しかし根本的な実装面で改修が必要な場合、SPDスクリプトの理解及びその環境が必要になります。
    Powershell+CSOM等のスクリプトをオンプレミスで利用している場合、参照するDLLと合わせてアップロードすることでSharePoint Onlineでも同じスクリプトを利用可能です。

  • Microsoft Flow
    フローが複雑になりがちですが、ブラウザのみで比較的容易に編集可能です。   Json,zip形式でインポート/エクスポート可能ですが、当然ながらオンプレと異なる実装となります。

将来的にMicrosoftは、SharePoint DesignerとInfopathの開発を打ち切るとアナウンスしていることからも、Microsoft Flowの利用にも慣れておきたいところですね。

なお、今回はよく直面する問題として通知機能を中心に記載していますが、このソリューションはSharePoint Onlineに対してあらゆるスケジューリングタスクを実現してくれますので、応用範囲は多岐に渡ります。
是非色々試してみてください。