Copilot in Power Automate for desktopを試してみました。
2023年3月に発表された「Copilot in Power Automate」
Microsoft Ignite 2023でも新しい情報が発表されました。
中でも私が注目しているのは「Copilot in Power Automate for desktop」です。
すでにプレビュー版がリリースされているので、さっそく試してみました。
※本記事で紹介しているのは 2023年11月時点 の情報です。今後仕様が変更される可能性がありますので、その点はご注意ください。
実行環境
OS:Windows 11 Pro Insider Preview バージョン 23H2
Power Automate for desktop バージョン 2.38.00231.23307
注意事項
この機能は2023年11月時点でプレビュー段階です。
Copilotはまだ開発中の新しい技術です。英語での使用に最適化されており、他言語でのサポートは限定的です。
Copilotで生成される回答は、Azure OpenAI ServiceとBing Searchによって提供されています。
前提条件
現時点でCopilot in Power Automate for desktopが利用できるのは米国環境のみです。
試用する場合は、Power Platform 管理センターから米国環境を作成する必要があります。
また、現時点で本機能を利用できるのは仕事用または学校用のアカウントのみで、Microsoft アカウントでは利用することはできません。
Copilotによる生成型の回答機能(Copilot generative answers)の利用
コンソール画面右上、あるいはデザイナー画面右上にある「Copilot」から「生成型の回答機能(Copilot generative answers)」(※機能の名称や表記が正式なものではない可能性があります)を利用できます。
「Copilot」ボタンをクリックすると、Copilotペインが表示されます。
提案されたプロンプトを選択するか、「Ask a question about Power Automate for desktop」ボックスから製品関連の質問を入力すると(※現時点では入力文字数200文字までの制限があります)、回答が生成されます。
表示は英語になっていますが、例えば“Excelで新規ワークブックを作成して、Sheet2のセルB2に「Hello world」と入力する方法”というような、日本語での質問にも対応しています。
上記質問に対しては下記の回答が生成されました。
ちゃんと質問内容を認識し、それに対してフローの作成方法を提示してくれています。
ただし、生成される回答は英語で、アクション名も英語になっているため、日本語環境下では分かりづらいところがあるかもしれません。回答に含まれるリンクから関連資料を参照すると良いでしょう。
2023/11/21 追記:
「日本語で回答してください」というように、日本語で回答を出力するように指定すると日本語で出力されるようです。
ただ、日本語であってもアクション名が正しいとは限らないため、ある程度推測しながらフローを作成することになりそうです。
新たに質問する場合は、画面右上にある「…」(3点リーダー)から「New chat」を選択します。
ここから利用規約やプライバシーステートメントを確認できるので、事前に確認することをお薦めします。
また、「日本の首都は?」といった、Power Automate for desktopには関係が無い事柄について質問をしたときは下図のように正しい回答が得られませんでした。
本機能は、あくまでもPower Automate for desktopに関連する質問に対して、アプリ上で利用者が迅速かつ正確な回答を得られるようにすることを目的とした機能となっています。
ただ、「アメリカの独立記念日は?」と質問したところ、下記のように一応は回答してくれました。
多少の柔軟性はあるのかもしれません。
Copilotを利用した自然言語からスクリプトへの変換
下記スクリプトアクションにもCopilot機能が追加され、自然言語からスクリプトを作成できるようになりました。
(「.NET スクリプト実行」アクションは非対応)
DOS コマンドの実行
VBScript の実行
JavaScript の実行
PowerShell スクリプトの実行
Python スクリプトの実行
各アクションの設定画面で追加された「Generate script with Copilot」ボタンをクリックすると、プロンプトの作成画面が表示されます。
「Prompt」ボックスに作成したいスクリプトの説明を入力し(※日本語対応、現時点では入力文字数200文字までの制限があります)、「Generate」ボタンをクリックすると、スクリプトが生成されます。
「Regenerate」ボタンをクリックするとスクリプトが再生成され、「Use this script」ボタンをクリックすると、元のウィンドウに戻ってパラメーターとして生成されたスクリプトが自動的に入力されます。
試しに指定したフォルダー内にあるファイルの一覧を取得するスクリプト(コマンド)を生成してみましたが、下図の通り目的の処理が実行されました。
以下は各アクションでどのようなスクリプトが生成されたかの結果です。
DOS コマンドの実行
プロンプト:「C:\Test\Copilot」フォルダの下にABC1からABC10までのフォルダを一括で作成し、各フォルダの中に「Hello world」と書かれたreadme.txtを作成する方法
結果:
for /L %i in (1,1,10) do (
mkdir "C:\Test\Copilot\ABC%i"
echo Hello world > "C:\Test\Copilot\ABC%i\readme.txt"
) && REM This code has been generated by AI. Original prompt: 「C:\Test\Copilot」フォルダの下にABC1からABC10までのフォルダを一括で作成し、各フォルダの中に「Hello world」と書かれたreadme.txtを作成する方法
そのまま使うことはできませんでしたが、変数部分のみ修正しbatファイルとして実行したところ、意図した通りの処理が行われました。
VBScript の実行
プロンプト:「C:\Test\Copilot」フォルダの下にABC1からABC10までのフォルダを一括で作成し、各フォルダの中に「Hello world」と書かれたreadme.txtを作成する方法
結果:
' This code has been generated by AI. Original prompt:
' 「C:\Test\Copilot」フォルダの下にABC1からABC10までのフォルダを一括で作成し、各フォルダの中に「Hello world」と書かれたreadme.txtを作成する方法
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
' Create folders ABC1 to ABC10
For i = 1 To 10
strFolderName = "C:\Test\Copilot\ABC" & i
If Not objFSO.FolderExists(strFolderName) Then
objFSO.CreateFolder(strFolderName)
End If
' Create readme.txt in each folder
strFileName = strFolderName & "\readme.txt"
Set objFile = objFSO.CreateTextFile(strFileName, True)
objFile.WriteLine("Hello world")
objFile.Close
Next
FileSystemObject(FSO)を使った処理ですね。
一部不要なコード(WScript.Shell)は含まれていますが、そのまま実行して問題なく処理が行われました。
JavaScript の実行
プロンプト:文字列「こんにちは、世界」をURLエンコードして結果を取得する方法
結果:
// This code has been generated by AI. Original prompt:
// 文字列「こんにちは、世界」をURLエンコードして結果を取得する方法
var str = "こんにちは、世界";
var encodedStr = encodeURIComponent(str);
WScript.Echo(encodedStr);
そのまま実行して問題なく処理が行われました。
生成されたスクリプト(コマンド)の実行結果は下図の通りで、意図した通りの処理が行われています。
PowerShell スクリプトの実行
プロンプト:電卓を起動してプロセスIDを結果として取得する方法
結果:
# This code has been generated by AI. Original prompt:
# 電卓を起動してプロセスIDを結果として取得する方法
$calcProcess = Start-Process calc -PassThru
Write-Output $calcProcess.Id
そのまま実行して問題なく処理が行われました。
Python スクリプトの実行
プロンプト:半径5の円の面積を計算して取得する方法
結果:
# This code has been generated by AI. Original prompt:
# 半径5の円の面積を計算して取得する方法
import math
radius = 5
area = math.pi * (radius ** 2)
print(area)
ちょっと例題として簡単すぎたかもしれませんが、そのまま実行して問題なく処理が行われました。
Copilot in Power Automate for desktopを試した感想
まずはCopilotによる生成型の回答機能、現時点では結果が英語であるという難点はありますが、手順やアクション名含めて書いてある内容は何となく分かりますし、参考資料へのリンクが出力される点も大いに評価できます。
何よりコンソールやデザイナー画面から簡単に機能を呼び出せるメリットは大きいです。
そしてCopilotを利用した自然言語からスクリプトへの変換機能、日本語のプロンプトも正しく認識され、たたき台として十分なレベルのスクリプトを出力してくれます。ゼロからコードを書くより遥かに早くスクリプトを作成できます。
もちろん、結果をそのまま利用できる場合もありますが、無駄なコードや正しくないコードが含まれる場合もあるので、コードを書くことに慣れていない方が出力された結果をそのまま使うことで余計なトラブルの原因となる可能性があるため、コードを修正できるよう、元の言語の知識はあった方が良いでしょう。
Copilot in Power Automate for desktop、現時点ではプレビュー段階の機能であり、私もほんの少ししか触っていませんが、私の想像よりも遥かに実用的な結果が出力されました。これからPower Automate for desktopでフローを作る際の大きな助けとなることは間違いないでしょう。今後のアップデートが非常に楽しみな機能です。
参考資料
この記事が気に入ったらサポートをしてみませんか?