HTTP要求を送信しますコネクタを使いドキュメント内のファイル名を書き換える
「HTTP要求を送信します」コネクタを使ってみる
別記事で「HTTP要求を送信します」コネクタの概要や関連キーワードについて解説しました。
本記事では解説した内容をもとに実際に「HTTP要求を送信します」コネクタを使ってみます。
コネクタを実際に使ってみましょう!
そうです。使ってみることが大事です。
「知ってる」と「使える」は大きな差がありますよ。
本記事ではSharePointのチームサイト内に格納されたファイル名を変更するという作業を行います。
この作業を既存のコネクタで対応するには「HTTP要求を送信します」コネクタが必須です。
実際のフローを1つずつ解説することで「HTTP要求を送信します」コネクタを使えるようになりますよ。
関連記事
「HTTP要求を送信します」コネクタの概要や関連キーワードを説明している記事はこちらです。
PowerAutomateではどんな仕組みで他のアプリケーションと情報をやり取りしているのか気になりませんか?
かんたんに理解できるように情報を整理してみました。
PowerAutomateを含めたPowerPlatformという枠組みの解説をしている記事はこちらです。
関連書籍
PowerAutomateに関する書籍はこちらです。
私はこちらの書籍を電子書籍で購入しました。
事例:ドキュメント内のファイル名を書き換える
まずはどんな仕事をするのか整理しておきます。
今回はSharePointで用意したチームサイトのドキュメント内に格納してあるファイル名を変更します。
文字列として少々複雑になってしまいましたがやりたい事は「ファイル名の変更」です。
作業フロー
作業フローは全部で5つです。(以下画像をご覧ください)
先頭で手動のトリガーを使っています。このコネクタをカウントから除外するとフローは実質4つです。
- パスによるファイルメタデータの取得 ・・・ ファイル名を変更するデータのIDを取得
- SharePointにHTTP要求を送信します ・・・ 対象ファイルに関連する情報をJSON形式で取得
- JSONの解析 ・・・ 取得したJSONを理解して変数に格納
- SharePointにHTTP要求を送信します2 ・・・ 変数を使いファイル名を変更
「HTTP要求を送信します」が2回出てきますね。
難しそうです。
確かに簡単ではないです。
順に説明していきますのでまずは作業をイメージしてください。
作業がイメージできればフローを構築することができますよ。
以降コネクタ単位で1つずつ解説していきます。
1_パスによるファイルメタデータの取得
まずは対象ファイルのIDを取得します。
取得したIDを次の工程(フロー)で変数として使う為です。
パラメータ名 | 選択/入力 | 内容 |
---|---|---|
サイトのアドレス | 選択 | 対象ファイルが格納されているサイトを選択 |
ファイルパス | 選択 | 対象ファイルを選択 |
このコネクタはそんなに難しくないですよね。次のコネクタの説明に進みます。
「次のフローで使うため」にデータを取得するという思考を持てると
フロー構築の幅が広がります。
1つのフローで仕事をやり切らなくても良いという事ですね。
「フローを組み合わせる」という考え方を知りました。
2_SharePointにHTTP要求を送信します(GETメソッド)
HTTPリクエストを作成します。
- 今回使用するのはGETメソッドです。ヘッダとボディへのパラメータはセット不要です
- URIの中で使用している変数は「パスによるファイルメタデータの取得」で取得したアイテムIDです
パラメータ | 選択/入力 | 内容 |
---|---|---|
サイトのアドレス | 選択 | 対象ファイルが格納されているサイトを選択 |
方法 | 選択 | 「GET」を選択(情報を取得する為) |
URI | 入力(変数の使用可) | _api/web/lists/GetByTitle(‘ドキュメント’)/items(対象ファイルのアイテムID)?$select=FileLeafRef |
参考:戻り値を指定することも可能
ヘッダーで指定することができます。
キーの「json」を「xml」に書き換えればxml形式でデータを取得することもできます。
URIとは
Uniform Resource Identifier の頭文字をとってURI(最後は英文字のアイ)です。
URIを理解するにはURLと一緒に考えると分かりやすいです。画像をご覧ください。
URIは対象のデータに含まれる関連情報です。URLはURIの中のアドレスだけの情報です。
URIにアクセスすることで対象のデータに関する色々な情報を一斉に引き出すことができます。
URIとURLの比較はすごくわかりやすいです。
私自身この説明が一番分かりやすかったので画像にしてみました。
イメージとしてとらえるにはすごく良い考え方だと思います。
情報が多すぎるURIから必要な情報だけ取得する
URIを全て取り出しても良いのですが今回は必要な情報だけ取り出す事にします。
URIの最後に「$select」と記入することでファイル名の要素だけを指定します。
「$select」の様に取得するソースをコントロールできる要素をクエリパラメータと呼びます。
3_JSONの解析
GETメソッドで指定しなければ取得した値は基本的にはJSON形式で返ってきます。
取得したばかりの値はただの情報です。この段階ではPowerAutomateは変数として認識できていません。
せっかく取得した情報ですので以降の作業で変数として使えるとフロー作成の際助かります。
よって取得した情報を変数として認識させるために「JSONの解析」コネクタを使用します。
パラメータ | 選択/入力 | 内容 |
---|---|---|
コンテンツ | 選択 | GETメソッドで取得した「本文」 |
スキーマ | 入力(コピー&ペースト可) | 以降説明します |
スキーマとは
スキーマとは設計図のようなものです。表でいうところの縦軸と横軸の要素です。
なぜスキーマを用意するのか
取得したJSONデータの構造を理解してPowerAutomateの中で変数として値を認識してもらう為です。
人間が表を認識するのと同じです。表の構造が理解できればデータを取り出すことができますよね。
同様にPowerAutomateにも表の構造を理解して変数として認識してもらう為にスキーマを用意します。
どうやってスキーマを用意するのか
スキーマのベースとなるデータをパラメータとして貼り付けることで自動でスキーマを形成してくれます。
実際に作業をしてみる
少し難しいので理解しやすい様に作業フローを用意してみました。
まずGETメソッドまでのフローを作ってSharePointのAPIに情報の出力を依頼します。
いわゆる「フローのテスト」を行います。
テスト結果の出力欄のbody枠の中に出力されたデータをコピーしておきます。
このデータ構造をPowerAutomateに理解させることでスキーマを形成してもらいます。
「JSONの解析」コネクタを用意します。
コンテンツには「HTTP要求を送信します」コネクタで取得したbodyをセットします。
その後サンプルから作成ボタンをクリック。
サンプルJSONペイロードの挿入というダイアログボックスが立ち上がります。
STEP1でコピーしておいた情報を貼り付けて完了ボタンをクリックします。
これで作業終了です。JSONを読み込んでスキーマを形成します。
変数として値が用意されるのは当たり前だと思っていました。
実際は変数を用意するという行為の裏ではこんな事が行われています。
デフォルトで用意されたコネクタがいかに優秀なのかが分かりますね。
4_SharePointにHTTP要求を送信します2(POSTメソッド)
JSONの解析まで済めばあと一息です。最後はファイル名を書き換える為に再度HTTPメソッドを使います。
今度はPOSTメソッドを使用します。POSTメソッドはデータの更新を行う為のメソッドでしたね。
POSTメソッドを使うと現状のデータを書き換えることができます。ファイル名の更新も可能です。
- 今回使用するのはPOSTメソッドです。パラメータを全てセットします
- URIの中で使用している変数は「パスによるファイルメタデータの取得」で取得したアイテムIDです
- ボディの中で使用している変数は「JSONの解析」で変数として認識したデータタイプです
用意するデータは以下テーブルをご覧ください。ヘッダーだけは2つ目のテーブルをご覧ください。
パラメータ | 選択/入力 | 内容 |
---|---|---|
サイトのアドレス | 選択 | 対象ファイルが格納されているサイトを選択 |
方法 | 選択 | 「POST」を選択(情報を更新する為) |
URI | 入力 | _api/web/lists/GetByTitle(‘ドキュメント’)/items(対象ファイルのアイテムID) |
ヘッダー | 入力 | 別テーブルを参照願います |
ボディ | 入力(変数の使用可) | { ‘_metadata’:{ ‘type’:’対象ファイルのデータタイプ’ }, ‘FileLeafRef’:’くも.png’ } |
ヘッダー用のテーブルです。
- Content-Type ・・・ リクエストの本文がどの形式であるかを指定しています
- If-Match ・・・ 対象データの状態を指定しています
- X-HTTP-Method ・・・ 対象データへのアプローチ方法を指示します
キー | 選択/入力 | 値 |
---|---|---|
Content-Type | 入力 | application/json;odata=verbose |
If-Match | 入力 | * |
X-HTTP-Method | 入力 | MERGE |
私がキーに対して用意したパラメータでは以下のような指示を送ることができます。
- Content-Type ・・・ 送信するデータのbody部はJSONです
- If-Match ・・・ 更新対象のデータ(オブジェクト)が存在したらリクエストを許可
- X-HTTP-Method ・・・ 更新対象のデータ(プロパティ)を部分的に更新
一連の操作がエラーなく通ればドキュメント内のクラウド.pngの名前はくも.pngに書き変わります。
記事を見ながら作業を追いかければフローを構築できるかも!
最初はそれでOKです。まずやってみることが一番重要です。
慣れてきたら仕組みを理解してください。
ご自身の仕事に応用できるようになりますよ!!
まとめ
「HTTP要求を送信します」コネクタを使った一連の操作の流れを見ていただきました。
この作業フローを構築した時に私が感じた事は以下3点です。ネガティブなイメージをもちました。
- 操作自体が面倒
- 作業としては追えるけど意味がついてこない
- 自分以外の他者にどうやって説明したら良いのか分からない
しかし反面では「PowerAutomateの仕組みを理解するにはとても良いコネクタだな」とも思えました。
このコネクタの仕組みを理解できればPowerAutomateで大抵の仕組みを理解することができます。
参考:PowerAutomateはノーコード、ローコードが売りですが・・・は言い訳
「PowerAutomateはノーコード、ローコードなので仕組みを理解しなくても良い」という考えの人も居ます。
それはそれでよいのですが私は反対です。操作だけ詳しい人はいつまでも初心者のままです。
中級者、上級者へレベルアップするには質が必要です。
モチベーションの高い方は是非勉強してみてください。