はじめに
20203/8/23のPython in Excel
の機能は大変盛り上がりましたね!
Python Lover の一人としても非常に楽しみな機能ですが、
使用できるライブラリはあくまで限定的であり、用途は限られます。
Python in Excelで使用できるライブラリ
- json
- Matplotlib
- NumPy
- pandas
- scikit-learn
- SciPy
- Seaborn
- statsmodels
- regex
詳しくは公式のレファレンスをどうぞ
SNSを拝見すると、特にニーズが高そうなライブラリはrequestsなのかなと。
こちらはPower Automate
とOffice Script
を活用することで実装できたりするので、
アウトプットを残します。
それでは本編をどうぞ~
大変参考になる記事
Power Platform界隈では、この方は最強ですね・・・。調べると全部載っていらっしゃる・・・。
合わせて先日私が書いたQiitaの記事もどうぞ~
Python in Excel はこちら
この方は本当に、もはや速すぎて衝撃です・・・。
Python in Excel
の発表当日に記事出されてました💦
1. Power Automate側の設定
まずは全体像
Power Automateの文字列はデフォルトのものを使っているので、検索すると同様のものが出てきます。
GPTでテキストを作成する
機能はプレビューで使用条件ありです。
詳しくは下記をどうぞ。
20203.08.24 時点
GPTでテキストを作成する
機能はChatGPT API
に置き換えてもいいと思います。
それも合わせて後述しますね。
1. 自動化したクラウド フローでHTTP 要求の受信時
を選択します。
Webhookなどで利用する方法ですね。
HTTP 要求 はPOST
形式で、URI
はフロー作成時に自動生成されます。
本文(body)は自分で定義することが出来るので、
とりあえずテキストオブジェクトだけ送る形式にしましょう。
{
"type": "object",
"properties": {
"prompt": {
"type": "string"
}
}
}
JSONのスキーマでprompt
をAPIに渡し、GPT利用の際に使用します。
この方法は他のAPI利用時にも使えそうですね!
まったく同じがご希望であれば、上記のスキーマを要求本文のJSON スキーマ
にコピペしてください。
2. GPT でテキストを作成する
繰り返しになりますが、あくまでプレビュー機能
です。
別の手段としてChatGPT API
の利用などが良いかと。
GPTのAPIの記事はとても多いので、説明は省きます。
3. 応答 でGPT でテキストを作成する
の結果を返す
{
"result": "@{outputs('GPT_でテキストを作成する')?['body/responsev2/predictionOutput/text']}"
}
こちらも後述するOffice Scriptに合わせて、自分で定義をしています。
見ての通りPower Automateの方はとても単純です。
API Keyも不要なのでAI Builder
最高過ぎます・・・
※ライセンスがないと使えません
2. Office Script
シナリオは下記の通りとします
画面はExcel on Web
です。Microsoft 365のExcelであれば、アプリでも同様になります。
セルA2にプロンプトを入力したら、セルB2に結果が返る
こういったシナリオにしましょう。
コード
async function main(workbook: ExcelScript.Workbook): Promise<void> {
// Your code here
const apiUrl = 'こちらにPower Automateで生成されたHTTP 要求受信時 HTTP POST の URLを設定';
// Excelのシートを取得
const targetSheet = workbook.getWorksheet("Sheet1");
// シートから入力セル(A2セル)の値を取得
const userInput = targetSheet.getRange("$A$2").getValue();
// Webサービスに送信するデータオブジェクトを作成
const requestData = { prompt: userInput };
// Webサービスのリクエストパラメータを設定
const requestOptions =
{
method: "POST",
headers:
{ "content-type": "application/json" },
body: JSON.stringify(requestData)
};
// Webサービスにリクエストを送信し、結果を待つ
const response = await fetch(apiUrl, requestOptions);
// レスポンスデータをJSON形式で解析
const jsonResponse: JSONData = await response.json();
// シートの結果表示セル(B2セル)に結果を設定
targetSheet.getRange("$B$2").setValue(jsonResponse["result"]);
// 結果をコンソールにも出力
console.log(jsonResponse["result"]);
}
// JSONデータの型を定義
interface JSONData {
result: string
}
JSON
の方は作成者の自由に設定できます。今回はテキストだけでいいです。
こちらを実行すると・・・
じゃじゃ~ん
HTTP 要求が実装出来ました!
最後に
カスタム関数にするには、準備が必要になりそう・・・。
なので研究を進めます!
個人的にはPython in Excel
も楽しそうですが
Office Scriptもいいぞ~ ということで締めたいと思います!