「FTP」アクションを使いこなす

Power Automate Desktop
「FTP」アクションを使いこなす

Power Automate DesktopにはFTPを自動化するためのアクションが豊富に用意されています。FTPとは「File Transfer Protocol」の頭文字をとったもので、サーバとクライアント(自分のパソコンなど)間でファイル転送を行う際のプロトコルのことを言います。レンタルサーバを借りてWebサイトを運営している場合などに利用することも多いと思います。このページではそれらのアクションの動きをひとつひとつ確認していきましょう。

(なお、2022/8/26執筆時点でのアクション数であり、今後、利用できるオプションが増える可能性があります。)

1. FTP接続を開く

FTP接続を開く

「FTP接続を開く」を利用すると、指定したサーバと自分のパソコンとの間にコネクションを作ることができます。以後、このコネクションを利用してファイルやフォルダーの転送を行っていくので、FTPを利用したい場合はまずコネクションを確保しましょう。設定画面では最初に「ホスト」名を入力します。例えば、「https://www.rpaone.jp」がこのサイトのURLになりますが、この「rpaone.jp」がホストとなります。「ポート」には接続先のポート番号を入力しましょう。特段の指定がない限りはFTPのコントロールコネクションには21番ポートが利用されます。このように慣習的に固定された役割の決まっているポート番号のことをウェルノウンポート番号と言います。

またFTPでは21番ポートを利用して接続するコントロールコネクションとは別に、実際のデータのやり取りを行うデータコネクションというコネクションも作られます。「アクティブモード」をONにした場合、このデータコネクションをサーバ側から作ることになります。一方、OFFにした場合(パッシブモード)、データコネクションはクライアント側から作られます。この2つにどんな違いがあるかというと、アクティブモードの場合、サーバ側のデータコネクションのポート番号は20番で固定されますが、パッシブモードの場合はランダムにポート番号が生成され、セキュリティを強化することができます。ただし、このモードに関してはサーバ側とクライアント側で合わせる必要があるので、サーバ側の設定に合わせるようにしてください。続いて接続したいサーバの「ユーザー名」と「パスワード」を入力します。レンタルサーバなどを契約した場合には登録完了メールなどに載っていますのでそちらでご確認ください。最後に「タイムアウト」させる秒数を設定したら完了です。このアクションを利用する場合、「接続を閉じる」アクションも一緒に利用するようにしてください。

FTP接続を開く設定画面

2. FTPディレクトリの一覧表示

FTPディレクトリの一覧表示

「FTPディレクトリの一覧表示」を利用すると、指定したフォルダーの直下にあるファイルやフォルダーの情報を取得してくれます。設定画面ではまず接続先のコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」アクションなどで先にインスタンスを作成します。次に情報を取得したいフォルダーのパスを入力したら、設定終了です。

FTPディレクトリの一覧表示設定画面

下図のような構成になっているフォルダーの情報を取得してみましょう。

サーバ側ディレクトリ構成

情報を取得してみると、ファイルとフォルダーが別々にリストとして格納されました。

実行後取得変数 実行後取得変数2

3. Secure FTP接続を開く

SecureFTP接続を開く

「Secure FTP接続を開く」アクションを利用すると暗号化された状態で、ファイルの送受信を行うことができるようになります。設定画面は「FTP接続を開く」と同じ部分が多く、「ホスト」にはURLのホスト部を入力します。例えば、「https://www.rpaone.jp」であれば「rpaone.jp」がホスト部になります。

SecureFTP接続を開く設定画面

「ポート」を飛ばして、「Secure FTPプロトコル」の設定方法を見ていきます。ここでは「SFTP」「FTPS Explicit(明示モード)」「FTPS Implicit(暗黙モード)」の3つから選択します。「SFTP」はアクションの名前にもなっているSecure FTPの略です。このSecure FTPとは、SSHという通信プロトコルを利用して暗号化された通信路を経由してファイルの送受信をできるようにしたものです。なので、厳密にはFTPとは異なり、SSHという規格を使って通信を行います。このSSHのサーバ側ポート番号は慣習的に22番を使われるので、「ポート」には22と入力しましょう。「SFTP」の場合にはSSH通信を行うための認証をする必要があります。認証方法は「ユーザー名とパスワード」「秘密キー」「秘密キーとパスフレーズ」から選択します。「ユーザー名とパスワード」はFTPを接続した時と同じものが使えます。「秘密キー」を作成している場合、秘密キーのファイルがあるパスを入力します。秘密キーにパスフレーズが設定されている場合は「秘密キーとパスフレーズ」を選択して、「パスフレーズ」も入力できるようにします。

SecureFTP接続を開く設定画面2

次にプロトコルを「FTPS Explicit(明示モード)」を選択した場合の設定を見ます。「FTPS」とはFTPで接続する際、データをSSL/TLSというプロトコルを使って暗号化したものを言います。この際、接続した後に暗号化で使用するプロトコルのやり取りを行い、通信を行うものを「Explicit(明示モード)」と言い、接続後すぐにSSL/TLS通信を行おうとするものを「Implicit(暗黙モード)」と言います。この場合、サーバ側が採用している暗号化プロトコルをクライアント側もあらかじめ採用しておかなければ、うまく通信できません。

「FTPS Explicit(明示モード)」を選択した場合のポート番号は21番になります。「ユーザー名」と「パスワード」は「FTP接続を開く」アクションの時と同じです。サーバは自己のサーバの信頼性を証明するために、認証局という第三者機関から証明書を発行してもらっています。「信頼されていない証明書を受け入れます」をONにするとこの証明書が有効期限切れになっていた場合や、設定が間違っていてうまくサーバに取り込めていなかった場合なども有効なものとして受け入れます。

SecureFTP接続を開く設定画面3

「FTPS Implicit(暗黙モード)」を選択した場合は、ポート番号は990番を使います。後の設定は「Explicit(明示モード)」を選択した場合と同じです。

SecureFTP接続を開く設定画面4

最後にタイムアウトさせる秒数を指定すれば終了です。筆者が「Implicit(暗黙モード)」で実行しようとした場合、下図のようにサーバ側で拒否され、接続することができませんでした。このようにエラーが起きた時に必ずしもRPA側にエラーがあるわけではなく、セキュリティ上の理由からサーバ側で拒否される場合もあります。

エラー画面

4. 接続を閉じる

接続を閉じる

「接続を閉じる」アクションを利用して、コネクションを切断します。設定画面では切断したコネクションを選択したら完了です。

接続を閉じる設定画面

5. 作業ディレクトリの変更

作業ディレクトリの変更

「作業ディレクトリの変更」を利用すると、作業するフォルダーを変更することができます。FTPでサーバにアクセスしようとすると、最初はデフォルトで「ルートディレクトリ」と呼ばれるフォルダーに接続されます。しかし、多くの場合においてルートディレクトリ直下で作業を行うのはまれで、作業を行いたいのは他のフォルダーにあります。その時に使うのがこのアクションになります。設定画面ではまずはコネクションを選択します。選択できるコネクションがない場合は先に「FTP接続を開く」などでコネクションを作る必要があります。次に移動したいフォルダーを指定すれば終了です。ディレクトリとはフォルダーのことを指しています。

作業ディレクトリの変更設定画面

項目冒頭のフローはサーバとの接続後、「ルートディレクトリ」から「wp-content」というディレクトリまで移動し、その直下にフォルダーを作成するというフローですが、実行すると下図のように「document」という名前のフォルダーが「wp-content」フォルダーの下に作成されます。

実行結果

6. FTPからファイルをダウンロードィレクトリの変更

FTPからファイルをダウンロードィレクトリの変更

「FTPからファイルをダウンロード」を利用するとFTP通信を行い、サーバから指定したファイルをダウンロードすることができます。設定画面ではまずコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などを利用してインスタンスを先に生成する必要があります。「フォルダーにダウンロード」にはダウンロード先となるフォルダーを入力ください。「ダウンロードするファイル」にはサーバ側のファイルパスを入力します。「転送の種類」は「自動」「バイナリ」「ACSII(アスキー)」から選択できます。ここでは厳密な説明は省きますが、画像や動画ファイルは「バイナリ」、HTMLなどのテキストファイルは「ACSII」で一般的には転送されます。「自動」を選択するとPower Automate Desktopがファイル形式に合わせて自動で選択してくれます。「ファイルが存在する場合」を「上書き」にすると、既にあるファイルを書き換えます。「ダウンロードしない」にすると、何もせず終了します。「一意の名前を指定してダウンロード」にすると、連番を追加することでファイル名を一意にしてダウンロードを行います。

FTPからファイルをダウンロードィレクトリの変更

実行すると、サーバ側にあった「test.txt」がローカルの指定したフォルダーにダウンロードされました。

実行結果

7. FTPからフォルダーをダウンロード

FTPからフォルダーをダウンロード

「FTPからフォルダーをダウンロード」を利用すると、FTP通信を利用してサーバ側から指定したフォルダーをダウンロードすることができます。設定画面では最初にコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などで先にインスタンスを生成する必要があります。「ダウンロードするフォルダー」にはダウンロードしたいフォルダーのパスを入力します。下図ではフルパスを入力していますが、あらかじめ「作業ディレクトリの変更」などでダウンロードしたいフォルダーのあるディレクトリに移動していれば、フォルダー名だけで実行することも可能です。「ローカル フォルダーにダウンロード」にはダウンロード先のフォルダーを入力します。

FTPからフォルダーをダウンロード設定画面

実行すると、サーバにあった「sample」というフォルダーがダウンロードされました。

実行結果

8. ファイルをFTPにアップロード

ファイルをFTPにアップロード

「ファイルをFTPにアップロード」アクションを利用すると、指定したファイルをサーバにアップロードすることができます。設定画面では最初にコネクションを選択します。選択できるコネクションがない場合は、先に「FTP接続を開く」などを利用してインスタンスを生成する必要があります。「アップロードするファイル」にはアップロードしたいファイルのフルパスを入力します。「リモートの場所」にはサーバ側でのファイルの置き場所を入力します。「転送の種類」は「自動」「バイナリ」「ACSII(アスキー)」から選択できます。厳密な説明は省きますが、画像や動画ファイルは「バイナリ」、HTMLなどのテキストファイルは「ACSII」で一般的には転送されます。「自動」を選択するとPower Automate Desktopがファイル形式に合わせて自動で選択してくれます。「ファイルが存在する場合」を「上書き」にすると、既にあるファイルを書き換えてアップします。「ダウンロードしない」にすると、何もせず終了します。「一意の名前を指定してダウンロード」にすると、連番を追加することでファイル名を一意にしてアップロードを行います。選択肢はダウンロードになっていますが、実際に行われるのはアップロードです。

ファイルをFTPにアップロード設定画面

実行すると下図のようにサーバ側の指定したフォルダーの中にファイルがアップロードされました。

実行結果

9. フォルダーをFTPにアップロード

フォルダーをFTPにアップロード

「フォルダーをFTPにアップロード」を利用すると、指定したフォルダーをサーバにアップロードすることができます。設定画面では最初にコネクションを選択します。「アップロードするフォルダー」にはアップロードしたいフォルダーをフルパスで入力します。「リモートの場所」にはサーバ側でのフォルダーの置き場所を入力します。

フォルダーをFTPにアップロード設定画面

実行すると、サーバの指定したフォルダーにアップロードされました。

実行結果

10. FTPファイルを削除

FTPファイルを削除

「FTPファイルを削除」を利用すると、FTP通信を利用してサーバ側のファイルを削除することができます。設定画面では最初にコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などを利用して先にインスタンスを生成する必要があります。「削除するファイル」には削除したいファイルのパスを入力します。ただし、「作業ディレクトリの変更」でファイルのあるフォルダーに移動していた場合はファイル名を入力するだけで実行できます。

FTPファイルを削除設定画面

実行すると下図のようにサーバ側にあったファイルが削除されました。

実行前 実行後

11. FTPファイルの名前を変更する

FTPファイルの名前を変更する

「FTPファイルの名前を変更する」を利用すると、サーバ側にあるファイルの名前を変更することができます。設定画面では最初にコネクションを接続します。続いて、名前を変更したいファイルを入力し、最後にファイル名を入力します。この際、あらかじめ「作業ディレクトリの変更」を利用して、名前の変更を行いたいファイルのあるフォルダーに移動しておくと便利です。

FTPファイルの名前を変更する設定画面

「作業ディレクトリの変更」を行わなくても、アクション自体は正常に動きますが、その場合は下図のようにファイル指定のところで同じパスを2度入力しなくてはならず、手間になります。

FTPファイルの名前を変更する設定画面2

実行すると、ファイルの名前を書き換えることができます。

実行前 実行後

12. FTPディレクトリの作成

FTPディレクトリの作成

「FTPディレクトリの作成」を利用すると、サーバ側にフォルダーを作成することができます。設定画面では最初にコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などを利用して先にインスタンスを生成する必要があります。「新しいディレクトリ」には作成したいフォルダーをフルパスで入力します。「作業ディレクトリの変更」を利用して既にフォルダーを作成したいディレクトリに移動している場合はフォルダー名を入力するだけで作成可能です。

FTPディレクトリの作成設定画面

実行すると、下図のように指定したディレクトリにフォルダーが作成されました。

実行結果

13. FTPディレクトリを削除

FTPディレクトリを削除

「FTPディレクトリを削除」を利用すると、サーバにある指定したフォルダーを削除することができます。設定画面では最初にコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などを利用して先にインスタンスを生成する必要があります。「削除するディレクトリ」には削除したフォルダーをフルパスで入力します。「作業ディレクトリの変更」を利用して既に削除したいフォルダーのあるディレクトリに移動している場合は、フォルダー名を入力するだけで削除可能です。

FTPディレクトリを削除設定画面

実行すると下図のように指定したフォルダーが削除されました。

実行前 実行後

14. FTPコマンドの呼び出し

FTPコマンドの呼び出し

「FTPコマンドの呼び出し」でFTPコマンドを利用することができます。設定画面では最初にコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などを利用して先にインスタンスを生成する必要があります。「FTPコマンド」で実際に行いたいコマンドを入力します。下図の「mdtm」は引数に指定したファイルの最終更新時間を取得するコマンドです。コマンドを実行すると、そのレスポンスとして、コードとテキストの2つが返ってきます。「mdtm」コマンドがうまく実行されると、「213」というファイル情報を示すコードが返ってきます。「有効な応答コード」に「213」と入力しておくと、「213」以外の予期せぬ値が返ってきたときにエラーを起こさせることができます。

FTPコマンドの呼び出し設定画面

実行すると下図のように最終更新時間を取得することができました。9時間ほど差が出ているのは世界標準時間で値が取得されているためです。

コマンド実行ファイル 実行後取得変数

15. ディレクトリの同期

ディレクトリの同期

「ディレクトリの同期」を利用すると、指定したフォルダーの同期を行うことができます。設定画面ではまずコネクションを選択します。選択できるコネクションがない場合は、「FTP接続を開く」などを利用して先にインスタンスを生成する必要があります。「同期の方向」ではローカルのフォルダーをサーバに同期させるのか、サーバのフォルダーをローカルに同期させるのか選択します。下図ではサーバのフォルダーを同期させるようにしています。同期する対象にはフィルターを設定することができます。「同期するファイル」に「ファイル フィルターに一致するファイルのみ」を選択すると、続く「ファイル フィルター」に入力した条件に合致するファイルのみを同期対象とします。「ファイル フィルターに一致しないファイルのみ」を選択した場合は、逆に条件に合致しないものだけを同期します。「すべてのファイル」を選択した場合は、フィルターをかけません。「ファイル フィルター」には正規表現を使うことができるので、「*.txt」などとすることで、特定の拡張子を持つファイルだけを同期させることができます。複数の条件を指定する場合はカンマ(,)で区切ります。「ローカルフォルダー」と「FTPディレクトリ」には同期の対象となるフォルダーパスをそれぞれ入力します。例えば、「ローカルフォルダー」に同期させる場合は「FTPディレクトリ」で指定したフォルダーの中身が「ローカルフォルダー」で指定したフォルダーに移植されます。「ソースが存在しない場合は削除」をONにすると、既に同期先のフォルダーにファイルが存在する場合、そのファイルが同期元のフォルダーに存在しなかったら削除するようにします。「サブディレクトリを含める」をONにすると、子要素以下のフォルダーも同期対象とします。同期を行うサーバのタイムゾーンが異なる場合は「時差」を使って調整します。

ディレクトリの同期設定画面

今回、上図の設定で、下記のディレクトリをローカルフォルダーに同期させます。

同期元フォルダー

実行すると、元々同期先のローカルフォルダーにあったPDFファイルは削除され、サーバにあるファイルやフォルダーがダウンロードされました。また、フィルターでテキストファイル、CSVファイル、XMLファイルのみを同期対象としたので、PDFファイルとExcelファイルは同期されていません。

実行前 実行後

また、「サブディレクトリを含める」をONにしていたので、孫フォルダーにあるCSVファイルも同期されました。

実行後:孫フォルダー

以上、「FTP」アクションについての解説でした。ネットワークの知識が少し必要な分野ですが、サーバとのやり取りをする上で便利なアクションです。ぜひ使いこなせるようになって自動化できる業務の幅を広げてください。

→「Power Automate Desktop」の他の操作も見る

執筆者プロフィール

プロフィール画像

伊藤 丈裕

(株)サムテックのシステムエンジニア。応用情報技術者資格保有。
27歳の時、営業から完全未経験で転職。開発とWebマーケティングを担当。得意言語はJavaとJavaScript。

タイトルとURLをコピーしました