この記事はPower Automate for desktopの「Pythonスクリプトの実行」アクションを検証してみた内容をまとめたものです。
Pythonスクリプトの実行アクションについて
「Pythonスクリプトの実行アクション」ではPower Automate for desktopにPythonのスクリプトを記述することで実行することができます。
採用されているPythonのバージョンは、現在の主流である3.0系ではなく、2. 0系になります。PandasやNumpyといったPythonを代表するようなモジュールは標準では使用することができません。
Python側にPADから値を渡すとテキストで認識され、Python側からPADに値を戻す時もPADはテキストとして認識されます。
出力する変数
%PythonScriptOutput%
Pythonスクリプトの出力が入ります。
%ScriptError%
Pythonスクリプト実行中のエラーが入ります。
Pythonへの値の受け渡し方法
Pythonスクリプトの実行アクションに%Var%のように記述することでPADの変数を使用することができます。
- PythonからPADの変数にアクセスする
"%PADで定義した変数名%"
と記述して呼び出す。
- PythonからPADに渡す
print Pythonの変数名
▲宛先にpower automateという文字列を渡してみます。
print "%NewVar%"
▲Pythonスクリプトの実行アクションに上記を記入します。
▲PADでPythonからの出力を受け取ることができました。
Pythonにリストを渡す(to Python from PAD)
そのまま渡してはダメ
PADで作成した%List%を受け渡ししてみます。
▲テスト用に[1,2,3,4,5]
という要素が5つ入ったリストを作成しました。
print "%List%"
▲「Pythonスクリプトの実行」アクションに上記のように記述します。
▲フローを実行して%PythonScriptOutput%変数を確認してみます。図をご覧いただくとわかるように、そのまま渡すと、リストではなく改行が含まれたひとつの文字列として認識されるせいか最初の要素しか認識してもらえないようです。
文字列リストの場合
str_list = ("""%List%""".splitlines()) print str_list
▲splitlines()で改行を使ってスプリットするとPython側でリストとして受け取ることができます。['1', '2', '3', '4', '5']
数値リストの場合
文字列として受け取っちゃうので、数値リストの場合はPython側で数値に戻します。
str_list = ("""%List%""".splitlines()) int_list = [int(i) for i in str_list] print int_list
Pythonからリストを受け取る(to PAD from Python)
pythonでリストをprintしてpadに返してもPAD側でリストとして認識してくれません。PADは”[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]”という一つの文字列として認識します。じゃぁPAD側でカンマで分割してみようと思っても、リストの閉じカッコである[]の部分も文字列として認識されているので、最初に[]を削除してから分割する必要があります。
それかPython側でリストをカンマでjoinして一つの文字列にし、それをPADに返却、PADでカンマで分割するという方法もあります。
list = ("""%List%""".splitlines()) my_str_list = ["moji" + i for i in list] my_str_list = ",".join(my_str_list) print my_str_list
",".join(my_str_list)
でリストを一つの文字列にします。
▲カンマで分割します。
▲フローを実行しました。リストにすることができました。
Pythonでいろいろ計算してみる
リストの合計値、最小値、最大値、平均値を求める。
▲テスト用に[1,2,3,4,5]
という要素が5つ入ったリストを作成しました。
str_list = ("""%List%""".splitlines()) int_list = [int(i) for i in str_list] print "受け取ったリストは{}です。".format(int_list) print "最大値は{}です。".format(max(int_list)) print "最小値は{}です。".format(min(int_list)) print "合計値は{}です。".format(sum(int_list)) print "平均値は{}です。".format(sum(int_list) / len(int_list))
▲上記のように記述しました。
Pythonのオンライン講座
Googleドライブ上のExcelファイルをPythonで操作する。
デイトラのPythonオンライン講座がコスパ良かったです。下記の記事に受講レビューを書きましたのでよかったら見てください。
先着1000名まで1万円引きキャンペーン実施中!(8月31日まで)
\買い切りだからコスパ最高・永久にユーザーコミュニティ参加可能/
Robinソースコード
SET List TO [1, 2, 3, 4, 5] DISABLE Scripting.RunPythonScript PythonCode: $'''print %List%''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError DISABLE Scripting.RunPythonScript PythonCode: $'''str_list = (\"\"\"%List%\"\"\".splitlines()) print str_list''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError DISABLE Scripting.RunPythonScript PythonCode: $'''list = (\"\"\"%List%\"\"\".splitlines()) int_list = [int(i) * 10 for i in list] print int_list ''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError DISABLE Scripting.RunPythonScript PythonCode: $'''list = (\"\"\"%List%\"\"\".splitlines()) my_str_list = [\"moji\" + i for i in list] my_str_list = \",\".join(my_str_list) print my_str_list ''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError DISABLE Scripting.RunPythonScript PythonCode: $'''print \"%NewVar%\"''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError DISABLE Scripting.RunPythonScript PythonCode: $'''str_list = [\'%List%\'] print str_list''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError Scripting.RunPythonScript PythonCode: $'''str_list = (\"\"\"%List%\"\"\".splitlines()) int_list = [int(i) for i in str_list] print \"受け取ったリストは{}です。\".format(int_list) print \"最大値は{}です。\".format(max(int_list)) print \"最小値は{}です。\".format(min(int_list)) print \"合計値は{}です。\".format(sum(int_list)) print \"平均値は{}です。\".format(sum(int_list) / len(int_list)) ''' ScriptOutput=> PythonScriptOutput ScriptError=> ScriptError DISABLE Text.SplitText.SplitWithDelimiter Text: PythonScriptOutput CustomDelimiter: $''',''' IsRegEx: False Result=> TextList
▲フローデザイナーに張り付けることでここで作成したフローを再現することができます。
まとめ
Power Automate for desktopにはリストの合計値、最小値、最大値、平均値を求めるような関数がないと思われるので、そういったものを利用するときはPythonスクリプトの実行アクションは使えるかなと思いました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。