【無料ですぐに作れる】Webフォームで仕事の効率化してみませんか?前回の記事では、弊社で使用している有給休暇自動承認フローについて紹介しました。当記事は前回の記事の続編ですので、詳しくは前回の記事を参照ください。Flowってなに?」という方は、前々回の記事を参照ください。」を扱う際の注意点や手順について説明します。Automate」と改称されました。新しい機能(RPA機能)もいくつか追加されています。Flow」と呼称しております。each」を作成する変数とは変数を設定する(応用編)コードを利用するSharePointにHTTP要求を送信する2次承認フローについて今回説明する「2次承認フロー」は「1次承認フロー」とほぼ同じ流れです。二つのフローチャートを見比べてみましょう。2次承認フローは、申請が承認された時のアクションが増えています。今回追加されたアクションは以下の2点です(上図の赤枠で囲まれている部分)。1個人リストに振り分ける2申請者に承認通知メールを送信するこれから、1と2について説明します。「個人リスト」の用途について1次承認フローでは、承認済みの休暇申請を「1次承認待ちリスト」から「2次承認待ちリスト」へ移動するだけでしたが、2次承認フローでは「2次承認待ちリスト」から「承認済みリスト」と「個人リスト」へ移動する必要があります。ここでいう「承認済みリスト」とは、1次承認者および2次承認者に承認された休暇申請が格納されるリストのことです。「1次承認待ちリスト」と「2次承認待ちリスト」は、承認前の休暇申請が一時的に保存されるだけですが、「承認済みリスト」には過去から現在の間に承認されたすべての休暇申請が保存されています。1つのリストである「個人リスト」の役割は、「承認済みリスト」と同じです。「個人リスト」は申請者(社員)1人につき、1つのリストが割り当てられています。そのため、フロー実行ごとに申請者が誰かを判断し、それに応じて休暇申請の保存先リストを変更する必要があります。「どうしてそんな手間をかけてまで「個人リスト」を使用するのか?」と疑問に思う方もいるのではないでしょうか?その理由は、データの閲覧権限にあります。弊社で運用している休暇申請フローには、管理者以外は閲覧できないように、すべてのリストに対してデータの閲覧権限を設定しています。自分の休暇申請履歴を閲覧したい社員もいるかもしれません。そのため、個別にリストを作成して、そのリストだけ別に閲覧権限を設定(管理者+リストの所有者のみ閲覧可)しています。※SharePointのアクセス制限の設定方法は、公式サイトのヘルプを参照してください。「承認済みリスト」に休暇申請を保存するだけなら1次承認フローと同じ処理で構いませんが、「個人リスト」に振り分ける際は別に処理を作成します。これは、最初の記事で説明した「条件分岐」に「変数」と「ループ」を加えた少し特殊な条件分岐で作成します。ワークフロー作成の準備をする社員のメールアドレスリストを作成しておく下図のように、社員の名前とメールアドレスが格納されたリストを作成します。1次承認ワークフローをコピーする2次承認フローの基本構造は1次承認フローと同じなので、1次承認フローをコピーして編集していきます。1次承認フロータイトルの右端に表示されている3つの点が縦に並んでいるマークをクリックして、「名前を付けて保存」を選択します。コピーするフローの名前を変更できるので、任意のタイトルに変更します。「保存」をクリックすると、1次承認フローのコピーが作成されます。コピーしたフローはコピー元のワークフローと内容が重複するため、初期設定ではオフになっています。これは、トリガーが実行されてもフローが開始しない状態です。編集中はオフのままでも構いませんが、動作テストをする際は、忘れずにオンにしましょう。新しい処理を追加する前に、コピー元である1次承認フローの内容を2次承認フロー用に書き換えます。・各ステップの名前を変更する下図は、どのステップがどのような働きをするのかを示しています。・各ステップの中身を変更する1トリガーを「1次承認待ちリストにアイテムが追加されたとき」から「2次承認待ちリストにアイテムが追加されたとき」に変更します。To(送信先メールアドレス)を2次承認用に変更します。3承認済みアイテムのコピー先を「2次承認待ちリスト」から「承認済みリスト」へ変更します。4削除するアイテムのリスト元を「1次承認待ちリスト」から「2次承認待ちリスト」へ変更します。5差戻し通知メールの宛先に「1次承認者のメールアドレス」を追加します。・承認通知メールの設定をする「申請者に承認通知メールを送信する」処理も作っておきます。具体的な作成方法は、こちらを参照してください。これで事前準備は完了です。それでは、新しい処理を作成していきましょう。【完成イメージ】SharePointリストを取得する1について説明します。このステップでは、社員のメールアドレスリスト(社員リスト)内のアイテム情報をすべて取得します。「はいの場合」の最初のステップに作成します。ここでの注意点は、最上位に新規ステップを追加することはできないことです。そこで、「承認済みリストにアイテムをコピーする」の下に作成して、あとで一番上に移動します。「アクションの追加」表示がない場所にステップを挿入したいときは、矢印部分にカーソルを合わせると表示される+ボタンを使用します。+ボタンをクリックすると、アクション選択画面が表示されます。検索ボックスに「SharePoint」と入力し、「複数の項目の取得」をクリックします。※「複数の項目の取得」とは、指定したリストのアイテム情報をすべて取得するアクションです。「サイトのアドレス」と「リスト名」を指定します。「リスト名」には、先ほど作成したメールアドレスリスト「社員リスト」を選びます。これで1の設定は完了です。each」を作成する2、3について説明します。ここでは、「リスト内のメールアドレスと申請者メールアドレスを比較し、両者が一致したときのみ、特定の処理を実行する」というアクションを、社員数分の繰り返し処理を行います。ここでいう「特定の処理」とは、個人リストに項目を作成することを指します。フローを作成するとき、同じ処理を複数回実行したいと思うことがしばしばあります。その時に、何度も同じ処理を作成するのは、大変です。そこで、最初の一回だけの処理を作成し、それを繰り返し実行してくれる「ループ」機能を利用します。each」の2つです。Flow内では、「はいの場合」)になるまでループ内の処理を繰り返す。足し算を繰り返し、合計が100を超えたらループを抜ける等の処理が行える。each(=それぞれに適用する)ひとつのアクションに対して複数のデータが返ってくるときに、それぞれのデータに対して処理を行う。eachによってそれらのファイルに対してひとつずつ処理を行える。each」を使います。ループの中に条件分岐を設置する、いわゆる「入れ子構造」を作成します。【入れ子構造】では順番に、ループから作成していきましょう。「社員のメールアドレスリストを取得する」ステップの下の+ボタンをクリックします。each」をクリックします。each」ステップが挿入されます。直前のステップで取得した「社員リスト」内のアイテムを出力するため、「社員のメールアドレスリストを取得する」ステップの「value」パラメータを挿入します。eachの中に「リスト内のメールアドレス=申請者メール」を条件に設定した分岐を追加します。「アクションの追加」→「組み込み」タブから「条件」をクリックします。左側の「値の選択」にステップ名「社員のメールアドレスリストを取得する」の「メールアドレス」パラメータを挿入します。右側の値には、トリガーでもある「2次承認待ちリストに新規アイテムが追加されたときに処理を開始する」ステップの「送信者」パラメータを挿入します。条件の設定が完了したら、分岐後の処理を作成していきましょう。変数とは4について説明します。変数とは、値の出し入れができる箱のことです。ここでいう「値」とは、数値や文字列です。Flowでサポートされている型は、以下の通りです。True(真)かFalse(偽)のいずれかの値が格納されている。小数を除いた数値を扱える。小数を含んだ数値を扱える。単語や文章としての各種文字を扱える。配列(列のみ)を扱える。配列(列と行)を扱える。2次承認フローでは、「文字列」を使用します。具体的には、「申請者の氏名」を格納します。先に進む前に、冒頭の完成イメージ図の4を見てみましょう。2~3で作成したループは、投稿通知メールアドレスをもとに、申請者の名前を特定するためのものでした。4は、2~3で特定した「申請者の名前」を「文字列」という形で扱うために、「変数」という箱を用意するためのステップです。変数とは何か、何のために使うのか、なんとなくイメージはつかめたでしょうか?個人リストの各リスト名は任意のもので構いませんが、一目で個人を特定できる要素を入れましょう。弊社では、「氏名」をリスト名に入れています。個人リストに振り分ける際、「氏名」を基準にしています。FlowでSharePointの項目を作成するとき、リスト名を指定したことを覚えていますか?これは、処理の結果にかかわらず、毎回固定のリストに項目を作成するためのものでした。今回は項目を作成するリストをその都度変更したいので、今までの同じやり方では不十分です。そこで、ここに「変数」を加えます。「変数」を使用すれば、フロー中の状況に応じて、その後に行う処理を変更することができます。ここで、なぜ「条件分岐」を使わないのかというと、条件分岐は選択肢が多ければ多いほど、効率が落ちるからです。条件分岐は、選択肢の数(今回の場合は社員の数)の処理を作成しなければなりません。それに対し、変数は最初に変数さえ用意しておけば、多様な処理を行うことができます。いえ、処理の内容によっては、条件分岐を使用したほうが効率的な場合もあります。選択肢が少ないときや、選択肢ごとに処理内容が大幅に変わるときなど、状況に応じて、使い分けましょう。変数を設定する変数を設定していきましょう。Flowでは、変数を使いたいとき、必ず初期化をする必要があります。「変数の初期化」はフローの最上位でないと行えないため、トリガーの次にステップを挿入します。トリガー直下の+ボタンをクリックすると、アクション選択画面が表示されます。「組み込み」タブを選択し、紫色の「変数」アイコンをクリックします。すると、変数のアクション一覧が表示されるので、「変数を初期化する」をクリックします。変数の初期化画面が表示されました。それぞれの値を以下のように設定します。名前:この変数には「申請者の氏名」を代入したいので、そのまま「Name」とします。変数の名前は、どんな用途で使われるのかが分かるものにします。種類:申請者の名前を文字型データとして扱いたいので、「文字列」を選択します。この変数の初期化時点では、まだ申請者の氏名を特定する手段がないので、「何もない・からっぽ」という意味の「null」を代入しておきます。これで、変数の初期化は終了です。ステップ名も分かりやすいものに編集しておきましょう。次に、申請者の名前を変数に代入します。申請者の名前を特定したあと、つまり3~4で作成したループ内にある条件分岐の、「はいの場合」に「変数の設定」アクションを設置します。「アクションの追加」→「組み込み」→「変数」から「変数の設定」を選択します。変数の設定画面が表示されました。「名前」項目の下向き三角をクリックすると、事前に宣言した変数一覧が表示されます。先ほど宣言した変数「Name」を選択しましょう。「値」には、「メールアドレスリスト」の「タイトル」を指定します。ここでいう「タイトル」は、社員の氏名を意味します。分からない場合は、SharePointのメールアドレスリストをもう一度見てみましょう。以上で、変数「Name」には申請者の名前が代入されたことになります。次のステップで変数を使ってみましょう。「変数の設定」ステップの下に「項目の作成」アクションを設置して、リスト名の一部に変数「Name」を挿入します。※リスト名一覧の一番下の「カスタム値の入力」から任意の文字列を入力できます。「リスト名」項目に「休暇取得リスト【】」と入力し、「【」と「】」の間にカーソルを合わせて変数「Name」パラメーターを挿入します。パラメーターは空か、実行時式が設定されています。」という警告が出ます。「実行時式が設定されています」とあるので、フローの実行時に値が変わる可能性のあるパラメーター、つまり変数は設定できないということです。実際には、この警告が表示されていてもフローは問題なく動作します。本来の使い方ではないようです。予期せぬ動作を引き起こす可能性があるので、今回は別の方法で「項目の作成」を行うことにします。「項目の作成」アクションと同じ処理を別の方法で実行したいわけですが、具体的にどういう手段を使えばいいのでしょうか?ここから多少ややこしい話になってきますので、よくわからないという方はこちらを参照してください。記述されているコードを画面通りにコピー&ペーストすれば、処理を行うことができます。(応用編)コードを利用するここは、上級者向けの内容です。Flowには、ステップごとに「コードのプレビュー」機能があります。試しに、「休暇取得リスト【山田一郎】」に項目を作成するアクションを作り、右上の「...」マークから「コードのプレビュー」をクリックして、「コードのプレビュー」を見てみましょう。コードビューが表示されます。上記のコードを抜き出してみましょう。“PostItem”}}}これをフロー作成画面と照らし合わせると、コードの赤字が項目名、青字が項目の内容に該当していることがわかります。示すコードを抜き出してみましょう。“休暇”どの文字列が何を指すのか、なんとなく把握できましたか?要するに、これらのコードをどうにかしてSharePointに送信できれば、「項目の作成」アクションと同じ処理が行えるということですね。Flowには、SharePointに直接データ(コード)を送れる機能があります。この機能を「HTTP要求(HTTPリクエスト)」といい、これを利用することで、既存のアクションだけでは手の届かない様々な処理を行うことができます。HTTP要求の送信には、先ほど抜き出したコードが必要になります。SharePointにHTTP要求を送信するでは、実際にHTTPリクエストを送信するための手順について説明していきます。先ほど試しに作った「項目の作成」ステップを削除します。要求を送信します」を選択します。HTTP要求送信の設定画面が表示されます。「サイトのアドレス」を指定します。これは、今までのやり方と同じです。次に、「方法」を指定します。5つの選択肢がありますが、それぞれの役割は下記の通りです。今回は、指定したリストに項目を追加、つまり「登録」をしたいので「POST」を選択します。「URI」には、項目を作成したいリストのURIを指定します。これは「項目の作成」アクションの「リスト名」項目とほぼ同じ役割の項目です。※「項目の作成」ではリスト名をそのまま指定していたのに対し、「URI」ではリストの場所をパス付き(URL)で指定することになります。「_api/web/lists/getbytitle(‘リスト名’)/items」となります。したがって、「URI」には「_api/web/lists/getbytitle(‘休暇取得リスト【】’)/items」と入力し、【】の間にパラメーター「変数:Name」を挿入します。コピペ用:_api/web/lists/getbytitle('休暇取得リスト【@{variables('Name')}】')/itemsヘッダーは使わないので、空欄で構いません。コードをそのまま入力します。"休暇"}コードの最初と最後には、必ず「半角波括弧{}」が必要です。波括弧がないとコードとして認識されないので、忘れないようにしましょう。「@{triggerBody()?[‘OData__x672c__x6587_’]}」の部分がパラメーターアイコンに置き換えられます。これはそれぞれ「トリガーのタイトル」、「トリガーの本文」を指すのですが、この画面に見覚えはありませんか?「HTTP要求の送信」アクションには「方法」や「URI」、「ボディ」など聞き覚えのない単語が並んでいますが、構成自体は「項目の作成」アクションとほぼ同じです。今回は変数を扱うため、馴染みのない手法を使いましたが、根本的には今までの操作と変わりはありません。この「HTTP要求」機能はいろんな使い方があります。興味のある方は、調べてみてください。2記事にわたって長々と説明しましたが、画像で見ると結構シンプルです。Flowを取り入れて、業務の効率化を図りましょう。当記事で紹介した以外にも、多種多様な機能があります。動作テストを繰り返しつつ、独自のアレンジを加えてみてください。formzu_blogフォームズ編集部オフィスで働く方、ホームページを運営されている皆様へ仕事の効率化、ビジネススキル、ITノウハウなど役立つ情報をお届けします。【フォーム作成クラウド】Webフォームで仕事を効率化したい方はこちらから最短30秒で作成。誰でもすぐに利用できます。