Excel のVBA(マクロ)から OpenAI の API を使ってみた

ExcelのVBAで作成したマクロから OpenAI の API が使えればいろいろと AI の活用範囲が広がりそうだったので、試してみることにしました。

なお、VBAの作成にあたっては、わちょんさんの以下の Youtubeを参考にさせていただきました。大変ありがとうございました。

ちなみに、この動画自体は3年前のもので、概要欄に書かれているコードをそのまま実行させても今の OpenAIでは動作しないようでしたので、「1.VBAの修正」の通り少し修正させていただきました。

1.VBAの修正

わちょんさんの概要欄に記載されているコードからの主な修正点は”★”の部分です。

Option Explicit
'★Chat Completions APIを使う場合のURLを変更
Const API_URL As String = "https://api.openai.com/v1/chat/completions"

Sub ApplyAddressCorrection()
Dim apiKey As String
Dim text As String
Dim response As String
Dim responseArray() As String
Dim ws As Worksheet
Dim i As Long

Set ws = ActiveSheet
ws.Range("B5").CurrentRegion.ClearContents

'★Windowsの環境変数にAPIキーを保存し、VBAから読み込む方法に変更
apiKey = Environ("OPENAI_API_KEY")

If apiKey = "" Then
MsgBox "OpenAI APIキーが設定されていません。", vbCritical
Exit Sub
End If

'★現行モデル"gpt-5-nano"の利用に変更
'★temperature = ws.Range("D3").Valueを削除
'★"max_tokens": 2000から"max_completion_tokens": 2000に変更
text = ws.Range("B2").Value & ws.Range("B3").Value
text = "{""model"": ""gpt-5-nano"", ""max_completion_tokens"": 2000" & ", ""messages"": [{""role"": ""user"", ""content"": """ & text & """}]}"
response = sendAPIRequest(API_URL, text, apiKey)

'★responseの中身を確認
Debug.Print response

'★extractContentの処理を2回→1回に変更し効率化
response = extractContent(response)
ws.Range("B5").Value = response

response = Replace(response, "\n", vbLf)
If ws.Range("D5").Value = "する" Then response = Replace(response, "。", "。" & vbLf)
responseArray = Split(response, vbLf)
For i = 0 To UBound(responseArray)
ws.Range("B" & 5 + i).Value = responseArray(i)
Next i
End Sub

Function sendAPIRequest(url As String, text As String, apiKey As String) As String
Dim request As Object
Set request = CreateObject("MSXML2.XMLHTTP")
request.Open "POST", url, False
request.setRequestHeader "Content-Type", "application/json"
request.setRequestHeader "Authorization", "Bearer " & apiKey
request.send text
sendAPIRequest = request.responseText
End Function

Function extractContent(response As String) As String
Dim startPos As Integer
Dim endPos As Integer

'★JSONの解析方法を変更
startPos = InStr(1, response, """content"": """)

If startPos = 0 Then
extractContent = response
Exit Function
End If

startPos = startPos + 12

endPos = InStr(startPos, response, """")

If endPos = 0 Then
extractContent = response
Exit Function
End If

extractContent = Mid(response, startPos, endPos - startPos)


End Function

2.Windowsの環境変数にAPIキーを保存

「1.VBAの修正」の中で記載の通り、Windowsの環境変数にAPIキーを保存し、VBAから読み込む方法にVBAを変更していますので、Windows11にて以下の操作を実行しています。

1.スタートボタンをクリック
2.「環境変数」と検索
3.「システム環境変数の編集」を開く
4.「システムのプロパティ」が開いたら、「環境変数」をクリック
5.「ユーザー環境変数」のところで 「新規」をクリック

上記の5.まで実施すると以下のウィンドウが表示されるので、
・変数名:OPENAI_API_KEY
・変数値:OpenAIで取得したAPIキー(sk-… )
を入力し、「OK」ボタンを押します。

Windows11のユーザ環境変数設定画面

この後、コマンドプロンプトを開いて下記のように入力し、APIキーが表示されれば登録成功です。(set コマンドで確認してもOK)

echo %OPENAI_API_KEY%

3.VBAの実行

ExcelにてセルのB2 および B3に OpenAIに質問したい事項を記入後、[ALT]+[F11]にてVBAの編集画面を起動し実行すれば、B5に OpenAIからの回答が出力されました。

ExcelからOpenAIのAPIにアクセスし回答が返ってきたところ

OpenAIのAPI利用条件が非常にわかりづらかった件と利用設定について

普段、私は ChatGPT を無料枠で使っているのですが、ふと OpenAI の APIを使ってみたくなりました。

ところがそのAPIの利用条件を調べてみてもいまいちわかりづらかったのでここで整理しておきます。

結論としては、
・ChatGPTの有料プランを購入しなくても OpenAI の API 利用は可能
・OpenAIのAPI利用はプランではなく完全に従量課金制
ということがわかりました。

また上記踏まえて、OpenAIのAPI利用設定を実施しましたので下記のとおり整理しておきます。

1.OpenAI API Platformにアクセス

下記のURLにアクセスしアカウントを作成後、ログインします。

OpenAI API Platform
https://openai.com/ja-JP/api/

2.API keyの作成

すると以下のような画面が表示されるので Get started のところに表示されている「1. Create an API key」をクリックし、API key を作成します。

OpenAI API Platform

なお、この時に作成したskから始まるAPI key は一度しか表示されないようですので、作成したら安全なところに保管してください。

3.クレジットの登録と支払い上限設定

API key を作成しただけでは API へアクセスできませんでした(自分の場合、無料枠はつきませんでした)ので、API を利用する為にクレジットの登録を行います。

上図の通り最上部のプルダウンから「Manage Projects」を選択後、左ペインの「Billing」を選択すると「Add payment details」のボタンが表示されるので、ここからクレジットカードを登録します。

OpenAI API Platform

なお、クレジットカードを登録した後に、下図の通り最初の購入額が設定できます。
ここで Use auto-reloadを OFF にすると最初の購入額を超えた API利用はできなくなり安心です。

OpenAI API Platform

実際にUse auto-reloadを OFF にするとこうなります。

OpenAI API Platform

最後に下記の画面で支払いの確認をすれば完了です。

OpenAI API Platform

4.支払い設定の確認

「Billing」にて auto-reload が OFF になっていることをあらためて確認します。
なおこの場合、残価が0円になるとAPIが自動的に利用できなくなりますので業務で定期的に利用している場合などは注意が必要ですね。

OpenAI API Platform

OpenAIのAPIを使った最初の PythonプログラムをMacで動かしてみたら意外とてこずった件

AIの本を読んでいて、OpenAIのAPIを使ってみたくなったので、Mac上で環境を用意し、PythonプログラムからOpenAI のAPIを呼び出してみました。

単純なプログラムを動かすだけなのですぐにできるだろうと思いましたが意外と手こずったので、ここにその時の記録を残しておきます。

エラー1.cannot import name ‘OpenAI’ from ‘openai’

まず Mac上で作成した Pythonのプログラム(test.py)を動かそうとして最初に発生したのがこのエラーでした。

% python test.py
Traceback (most recent call last):
File "/Users/XXX/tmp/test.py", line 1, in <module>
from openai import OpenAI
ImportError: cannot import name 'OpenAI' from 'openai' ・・・

原因はどうやら自分のMAC上の openai のライブラリが古いようで、以下のコマンドでバージョンアップしてあげることで解消しました。

% pip install --upgrade openai
Requirement already satisfied: openai in /Users/XXX/.pyenv/versions/3.10.0/lib/python3.10/site-packages (0.27.10)
Collecting openai
Downloading openai-2.52.0-py3-none-any.whl.metadata (40 kB)
 ・・・

エラー2.NameError: name ‘sk’ is not defined

そして次に遭遇したのがこのエラーです。

エラーの理由は単純で、あらかじめ取得しておいた api_keyをプログラム内に設定する際に””で括ってあげていない為でした。

ただしくは以下の通りに記述する必要があります。(本当はプログラム内に直接 APIキーを書かない方がいいですが。)

client = OpenAI(
api_key ="sk・・・・・"
)

エラー3.openai.RateLimitError

そして最後に遭遇したのがこのエラーです。詳しくは以下の通り出力されていました。

openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

このエラーの原因も単純で、まだこの時点ではOpenAI のWeb上から api_key を入手しただけで、支払い処理(クレジットカードの登録)を実施していなかった為でした。

OpenAI の APIの作成手続きを済ませた直後は無料枠が使えるのかと思っていましたが、そんなに甘くはないようです。(2027.8.1時点)

ついに成功

その後、支払いを済ませて再度プログラムを実行すると、正常動作しました。

% python test.py
こんにちは!元気ですか?何かお手伝いできることはありますか?

たとえばこんなことができます。
- 日本語↔英語の翻訳・添削
- 文章の要約・ブラッシュアップ
- アイデア出しや企画の構成作成
- 技術的な質問・コーディングのサポート
- 日常の相談・学習サポート

話したいトピックを教えてください。最近の話題でもOKです。

Mac OSにてpandocとpbpaste、pbcopyを利用して、ChatGPTの回答をコピペでいい感じに WordPressに貼り付けてみた

最近たまにChatGPTを利用することがあるのですが、そのChatGPTの回答をWordpressに貼り付けたいことってありませんか?

私は最近、それができたらいいなあとおもっていたところ、pandocというアプリケーションと Mac 標準の?pbpaste、pbcopyコマンドを利用して、比較的簡単に実現する方法を見つけたのでここに共有しておきます。

流れとしては、

1.pandocをMacにインストール
2.ChatGPTに質問し、その回答をコピー
3.コンソールで pandoc、pbpaste、pbcopyコマンドを実行
4.WordpressにてカスタムHTMLの部品を作成
5.カスタムHTMLにクリップボードの内容を貼り付け

といった感じです。

1.pandocをMacにインストール

HomebrewでMac OSに pandocをインストールしてもいいらしいのですが、私の環境ではうまくいかなかった(インストールはできたのかもしれませんが、PATHがうまく設定できず断念)したので、パッケージをダウンロードしてインストールしました。

jgm /pandoc 
https://github.com/jgm/pandoc/releases

2.ChatGPTに質問し、その回答をコピー

ChatGPTが回答すると、最後に以下のようなマークが出力されると思います。その中から左から2番目(赤枠部分)をクリックします。

そうすると、ChatGPTの回答がクリップボードに貼り付けられます。

3.コンソールで pandoc、pbpaste、pbcopyコマンドを実行

そしたら、Mac OSのコンソールから以下のコマンドを実行します。

 % pbpaste | pandoc --to=html | pbcopy

すると、自動的に クリップボードのデータがHTMLのタグ付きデータに変換されます。うーん、便利。

4.WordpressにてカスタムHTMLの部品を作成

クリップボードのHTMLのタグ付きデータを貼り付けたいので、WordPress の部品から、以下の通り「カスタムHTML」を選択します。

5.カスタムHTMLにクリップボードの内容を貼り付け

最後に、「カスタムHTML」の中にクリップボードの内容をペーストすれば完了です。

貼り付けた後、プレビュー でみてみれば完成イメージが確認できます。なお、このプレビュー は簡易的なので、実際にどう見えるかは実際に記事をアップロードして確認したほうが良いと思います。

参考サイト:

PandocのインストールとPDF生成(macOS)
https://blog.machine-powers.net/2018/07/02/install-pandoc-and-generate-pdf/#pandocのインストール
ChatGPTの回答をWordPressに整形テキストとして貼り付ける方法
https://flogics.com/wp/2024/09/chatgpt-markdown-to-wordpress/

3種類のCSVを読み込んで1つのJSONデータにするpythonをChatGPTに作成してもらった

以下の3つのファイルを1つのJSONデータにするPythonプログラムをChatGPTに作成してもらいました。

mail-src,mail-subject
aaa@yyy.com,"test ay1"
aaa@yyy.com,"test ay2"
aaa@zzz.com,"test az1"
bbb@yyy.com,"test by1"
bbb@zzz.com,"test bz1"
ccc@yyy.com,"test cy1"
ccc@zzz.com,"test cz1"

uid,mail-src
user-a,"aaa@yyy.com,aaa@zzz.com"
user-b,"bbb@yyy.com,bbb@zzz.com"
user-c,"ccc@yyy.com,ccc@zzz.com"

dest,state,category,black,pc,uid,mail
https://aaa.com:9001/aaa,pass,phishing,no,pc-a,user-a,aaa@xxx.com
https://bbb.com:9001/bbb,block,c2,yes,pc-b,user-b,bbb@xxx.com
https://ccc.com:9001/ccc,pass,c2,yes,pc-c,user-c,ccc@xxx.com

出来上がりのJSONイメージは以下の通りです。

[
  {
    "dest": "https://aaa.com:9001/aaa",
    "state": "pass",
    "category": "phishing",
    "black": "no",
    "pc": "pc-a",
    "uid": "user-a",
    "mail": "aaa@xxx.com",
    "mail-src": {
      "aaa@yyy.com": [
        "test ay1",
        "test ay2"
      ],
      "aaa@zzz.com": [
        "test az1"
      ]
    }
  },
  {
    "dest": "https://bbb.com:9001/bbb",
    "state": "block",
    "category": "c2",
    "black": "yes",
    "pc": "pc-b",
    "uid": "user-b",
    "mail": "bbb@xxx.com",
    "mail-src": {
      "bbb@yyy.com": [
        "test by1"
      ],
      "bbb@zzz.com": [
        "test bz1"
      ]
    }
  },
  {
    "dest": "https://ccc.com:9001/ccc",
    "state": "pass",
    "category": "c2",
    "black": "yes",
    "pc": "pc-c",
    "uid": "user-c",
    "mail": "ccc@xxx.com",
    "mail-src": {
      "ccc@yyy.com": [
        "test cy1"
      ],
      "ccc@zzz.com": [
        "test cz1"
      ]
    }
  }
]

そして実際にChatGPTに作成してもらった Pythonプログラムは以下の通りです。(すこし自分の環境に合わせて修正はしていますが。)

import csv
import json

# CSVファイルを読み込み、データを取得
# 
# 最初の部分では、mail_src.csv、mail_data.csv、url_data.csv という
# 3つのファイルをそれぞれ辞書形式に読み込みます。
# これにより、各ファイルのデータが辞書のリストとして取得されます。
# それぞれの辞書内には、CSVのヘッダーがキーとして使用され、
# 各行のデータがそれぞれの辞書として格納されます。

with open('mail_src.csv', 'r') as file:
    mail_src_data = list(csv.DictReader(file))
    
with open('mail_data.csv', 'r') as file:
    uid_data = list(csv.DictReader(file))

with open('url_data.csv', 'r') as file:
    dest_data = list(csv.DictReader(file))

# メールアドレスと件名をマッピングする辞書を作成
# 
# mail_src.csv ファイルの内容から、メールアドレスと件名のマッピングを
# 作成します。mail_subject_map という辞書を作成し、
# メールアドレスをキーにして、それに関連する件名をリストとして格納します。

mail_subject_map = {}
for entry in mail_src_data:
    mail = entry['mail-src']
    subject = entry['subject'].replace('\u201d', '').replace('\"', '')
    if mail in mail_subject_map:
        mail_subject_map[mail].append(subject)
    else:
        mail_subject_map[mail] = [subject]

# JSONデータを構築
#
# dest_data の情報を元にして新しい JSON データを構築します。
# 各行の情報を元に、dest_entry という辞書を作成し、'dest'、'state'、
# 'category'、'black'、'pc'、'uid'、'mail'というキーを持たせます。

json_data = []
for entry in dest_data:
    uid = entry['uid']
    mail = entry['mail']
    dest_entry = {
        'dest': entry['dest'],
        'state': entry['state'],
        'category': entry['category'],
        'black': entry['black'],
        'pc': entry['pc'],
        'uid': uid,
        'mail': mail,
        'mail-src': {}
    }
    # mail-src内のデータを整形
    #
    # 'mail-src' キーに関連する情報を整形します。
    # これは、mail_data.csv と mail_src.csv の情報を組み合わせ、
    # 指定された形式で'mail-src' キーの中身を構築するための処理です。

    if uid in [row['uid'] for row in uid_data]:
        mail_src = [x.strip() for x in next(row['mail-src'] for row in uid_data if row['uid'] == uid).split(',')]
        for src in mail_src:
            if src in mail_subject_map:
                dest_entry['mail-src'][src] = mail_subject_map[src]
    json_data.append(dest_entry)

# JSON形式に変換して出力
#
# json.dumps() を使用して json_output に JSON 形式のデータを出力します。
# これにより、json_output には指定された形式の JSON データが格納されます。
# そして、print(json_output) により、この JSON データが出力されます。

json_output = json.dumps(json_data, indent=2)
print(json_output)

人間が作るとなるとPythonに詳しい人でも数時間はかかりそうですが、ChatGPT は一瞬で作ってしまうところがすごいですね。

また、私はPython初心者なので、見たことないような関数を使われていると勉強になります。

CAMBLY で AI とのレッスンが無料で受けられると聞いてアカウント登録してみた

最近、Youtube や ブログなどで CAMBLY の AI との英語レッスンがすごい!との噂を聞きました。

しかもその AI レッスンは、CAMBLY のアカウントを作成するだけで無料で使えるとのことなので、試しにアカウントを作成しました。その時の記録をここに残しておきます。

結論としては、アカウントを登録する際にクレジットカードの情報を入れる必要もなく、手軽に使えることがわかりました。

以下にアカウント作成時の手順を記載しておきます。

CAMBLY のアカウント作成手順

まず以下のサイトにアクセスします。

CAMBLY
https://www.cambly.com/

するとCAMBLYのトップページが表示されますので、右上の「登録する」ボタンを押します。

CAMBLY トップページ

1.アカウントを登録する

アカウントの登録方法を選択する画面が表示されますので、好きな方法をアカウント登録を行います。

私は、お試しでアカウントを作成してみたいだけなので、右下のメールのアイコンを選択しました。

CAMBLY登録画面1

次にメールアドレスをパスワードを選択します。

CAMBLY登録画面2

最後に名前(ニックネーム)を登録します。

CAMBLY登録画面3

2.個人の情報を入力

ここから2ページに渡り、個人の情報をいれていきます。

まずは自分の英語力についてです。

CAMBLYパーソナライズ画面1

次に学習目標などを聞いてきます。

CAMBLYパーソナライズ画面2

3.勧誘ページをスキップ

最後に勧誘の画面が表示されます。

ここは興味がなければどんどんスキップしていきましょう。

CAMBLY勧誘画面1

次も勧誘ですのでスキップします。

CAMBLY勧誘画面2

4.CAMBLY ミニレッスンを選択

ここまでログインが完了したので、画面左下の「Camblyミニレッスン」を選択します。

CAMBLYログイン後トップ画面

するとAIとのレッスン画面に無事アクセスすることができました。

CAMBLY AI レッスン画面

こらから実際に使ってみたいと思います。

Open Interpreter を Macにインストールしようとしたらエラーがでた話

最近 Open Interpreterの記事をいろいろ見つけたので自分のMacにもインストールしようとしてみたところ、以下のようなエラーが出ました。

エラーが大量発生

% pip install open-interpreter
ERROR: Ignored the following versions that require a different python version: 0.0.1 Requires-Python >=3.10,<4.0; 0.0.2 Requires-Python >=3.10,<4.0; 0.0.21 Requires-Python >=3.10,<4.0; 0.0.22 Requires-Python >=3.10,<4.0; 0.0.221 ・・・
・・・
Requires-Python >=3.10,<4.0; 0.1.4 Requires-Python >=3.10,<4.0
ERROR: Could not find a version that satisfies the requirement open-interpreter (from versions: none)
ERROR: No matching distribution found for open-interpreter

Pythonのバージョンを3.10.0にアップして成功

結論としては、どうやら Macの Pythonのバージョンが Python 3.8.3 のままになっていたのが原因のようでした。

以下の要領で 3.10.0 にアップしたところ、Open Interpreterを正常にインストールすることができました。

% python --version
Python 3.8.3
% pyenv install -list
Available versions:
・・・
  3.10.0
  3.10-dev
  3.11-dev
・・・
  stackless-3.7.5
% pyenv install 3.10.0
python-build: use openssl@1.1 from homebrew
・・・
Installed Python-3.10.0 to /・・・/.pyenv/versions/3.10.0
% pyenv local 3.10.0
% Python -V
Python 3.10.0
% pip install open-interpreter
Collecting open-interpreter
  Downloading open_interpreter-0.1.4-py3-none-any.whl (35 kB)
・・・
WARNING: You are using pip version 21.2.3; however, version 23.2.1 is available.
You should consider upgrading via the '/Users/katsuhiro.kurita/.pyenv/versions/3.10.0/bin/python3.10 -m pip install --upgrade pip' command.

ChatGPT Code interpreterを使って直接スクレイピングはできないけど、スクレイピングするpythonは作成できる

ChatGPT Code interpreterはインターネットに繋がっていないので直接 Webサイトのスクレイピングコードを作成することはできないと言われています。

ただし、以下のような質問と、WebサイトからダウンロードしたHTMLを添付してあげることにより、<ほぼ>そのまま動作するpythonコードを作成してもらうことが可能です。

添付ファイルのWebサイトにアクセスし、トップページから特定の日付の記事のタイトルとリンクをデータを抜き出すpythonコードを作成してください。
なお、日付は自動的に昨日の日付を設定し、添付のファイルは以下のURLにあるものとしてください。https://www.xxxx.com/news/

以下、Code interpreterにて作成してもらった pythonプログラムです。

後半は手直しが必要な状態ですが、もう少しきちんと指示をしてあげればそのまま動作するpythonを作ってくれるのではなかと思います。

from datetime import datetime, timedelta
import requests
from bs4 import BeautifulSoup

# Set yesterday's date
yesterday = datetime.now() - timedelta(days=1)

# Initialize an empty list to store the articles
articles_yesterday = []

# URL of the top page
url = "https://www.xxxx.jp/news/"

# Get the HTML content of the top page
response = requests.get(url)
html = response.text

# Use BeautifulSoup to parse the HTML content
soup = BeautifulSoup(html, "html.parser")

# Find all <li> elements in the HTML
for li in soup.find_all("li"):
    # Find the <time> element in the <li> element
    time_element = li.find("time")
    if time_element:
        # Extract the date from the "datetime" attribute of the <time> element
        date_str = time_element["datetime"].split("T")[0]
        date = datetime.strptime(date_str, "%Y-%m-%d")

        # Check if the date of the article is yesterday
        if date == yesterday:
            # Find the <a> element in the <li> element
            a_element = li.find("a")
            if a_element:
                # Extract the title and the link of the article
                title = a_element.text
                link = a_element["href"]
                articles_yesterday.append((title, link))

# Print the articles of yesterday
for title, link in articles_yesterday:
    print(f"Title: {title}")
    print(f"Link: {link}\n")

SOARからChatGPTにアクセスするインテグレーションをYoutubeを見ながら作成してみた

すでに XSOAR には ChatGPT にアクセスする為のインテグレーションがありますが、Youtube をみるとそれを自作する動画があったので、勉強の為、真似して作成してみました。

ただし、Youtube の動画のPythonをそのまま利用してもエラーがでてしまったので、ChatGPT と相談しながら修正しました。

それ以外の詳しい手順は以下のYoutubeをご覧ください。

XSOAR Integration Creation for CHATGPT to Answer Questions – PurpleXsec

1.BYOIボタンを押す

まず、XSOAR にログインし、左下の settingsメニューから Integrations – instances に進みます。

すると右上に「+BYOI」ボタンが表示されるので、それを押します。

2.Integration Settingsを設定する

「+BYOI」ボタンを押すと、右側に Integration Settings が表示されるので、その中の、

・BASIC
・Parameters
・Commands

などの設定を Youtubeを見ながら実施していきます。

3.Pythonコードをサイトからコピペする

Youtube の中に出てくるPythonコードは以下のGitHubで公開されていますので、これをコピーし、左側にデフォルトで提供されるPythonコードと置き換えます。

https://github.com/vidura-supun/XSOAR-CHATGPT-Integration/blob/main/ChatGPT.py

4.Pythonコードを少し修正する

GitHubからコピーしてきたPythonコードをそのまま利用すると後述の Integrationの接続テストの際に、以下のエラーが発生してしまいます。

Authorization Error: make sure API Key is correctly set (85)

どうやら ChatGPT APIにアクセスするための認証ヘッダーの定義が Youtube 公開当時から変わった?ようなので、22行目を以下の通り書き換えます。

変更前
self._headers = {'Authorization': self.api_key, 'Content-Type': 'application/json'}
変更後
self._headers = {'Authorization': f'Bearer {self.api_key}' , 'Content-Type': 'application/json'}

あとで調べたのですが、ChatGPT ではAuthorizationヘッダを用いた Bearer認証というものを利用しているみたいですね。(BASIC認証の親戚みたいな感じですね。)

5.テスト接続する

4.の修正後、Integration設定画面から「Test」ボタンを押すと、以下のとおり正常に接続することができました。

XSOAR – Integration設定画面

この後問題なく「user_question」コマンドを実行することもできました。

Power AutomateからChatGPTが生成したpythonを実行させる

ChatGPT でpythonを自動生成してくれるので、それをPower Automateで自動的に動かせないかと思い、試してみました。

もしかしたらこれを一歩進めて、Power Automateから ChatGPT を呼び出してpython を自動生成させ、それをさらにPower Automateから自動実行させるみたいなことができるかもしれませんねー。

1.Power Automate Desktop(PAD)を起動

Windows 10 にインストールしたPower Automate Desktopを起動します。

Power Automate Desktop画面

2.PADでフローの作成開始

「+新しいフロー」を選択し、フロー名を設定後、「作成」を選択します。

Power Automate Desktop画面

3.ChatGPT で生成したPythonをファイルに保存

ChatGPT で生成したPythonをコピペしてファイルに保存しておきます。

保存したPythonプログラムを実行させるには、Windows 10に Pythonの実行環境とPythonプログラムの中で利用しているライブラリがインストールされている必要があります。

4.アプリケーションの実行を選択

ファイルに保存されているPythonプログラム(*.py)を実行する為、
左ペインの「アクション」から「システム」-「アプリケーションの実行」
を選択します。

Power Automate Desktop画面

5.アプリケーションとしてpythonを指定

「アプリケーションの実行」設定画面にて以下の通り設定します。

アプリケーションパス:python
コマンドライン引数:pythonプログラム名
作業フォルダー:pythonプログラム名を置いているディレクトリ

Power Automate Desktop画面

設定後、「保存」ボタンを押すと以下の画面となります。

Power Automate Desktop画面

6.Pythonの実行結果をメモ帳で表示

pythonの実行結果は作業フォルダーにファイルとして保存されるようになっている為、それをメモ帳で表示する処理を以下のとおり追加してみました。

Power Automate Desktop画面