pythonからSlackに通知する

まずはこちら参照してアプリを作る
blog.systemjp.net

Webhooksを使うための準備方法

・Incoming Webhooksを有効にする:

アプリの設定ページで、「Incoming Webhooks」を選びます。
画面の指示に従って、Incoming Webhooksを「On」に切り替えます。

・Webhook URLを作成する:

「Add New Webhook to Workspace」ボタンをクリックします。
ポストしたいチャンネルを選択して、アプリにそのチャンネルへのアクセス権を付与します。
これにより、特定のチャンネルにメッセージを送信するためのWebhook URLが生成されます。

・Webhook URLをコピーする:

生成されたWebhook URLは、アプリの設定画面の「Webhook URLs for Your Workspace」セクションに表示されます。このURLをコピーして、安全に保存してください。

pythonコード

def send_slack(message):
    try:
        webhook_url = 'https://hooks.slack.com/services/*******'
        payload = {'text': message}
        response = requests.post(webhook_url, json=payload)
        if response.status_code == 200:
            print("Slackにメッセージが送信されました。")
        else:
            print("Slackメッセージ送信失敗。")
    except Exception as e:
        print(f"Slack送信エラー: {e}")

WebRequestで失敗するようになったらTLS1.2有効にすると治るかも C#

C# いままで問題なかったプログラムで

System.IO.Stream reqStream = req.GetRequestStream(); の行で
以下エラーが出ました。

System.Security.Authentication.AuthenticationException
  HResult=0x80131501
  Message=SSPI への呼び出しに失敗しました。内部例外を参照してください。
  Source=System
  スタック トレース:
   場所 System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)

内部例外 1:
Win32Exception: 要求された関数はサポートされていません


このコード行を、WebRequest を作成する前に追加したら治りました。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Excel VBAでOpanAI apiで質問して受け取る関数

Microsoft XML, v6.0 (MSXML6) ライブラリを利用して HTTP リクエストを実行します

JsonConverter ライブラリをVBAにインポートする必要があります。このライブラリは、GitHubから「VBA-JSON」としてダウンロードできます。

Function GetOpenAIResponse(prompt As String) As String
    
    Dim json As Object
    
    Dim httpRequest As Object
    Set httpRequest = CreateObject("MSXML2.XMLHTTP")
    
    Dim url As String
    url = "https://api.openai.com/v1/chat/completions"
    
    Dim apiKey As String
    apiKey = "set api key"  ' API キーを設定してください

    ' Prompt内のダブルクォートと改行をエスケープ
    Dim safePrompt As String
    safePrompt = Replace(prompt, """", """""")  ' ダブルクォートのエスケープ
    safePrompt = Replace(safePrompt, Chr(10), "\n")  ' 改行のエスケープ
    safePrompt = Replace(safePrompt, Chr(13), "")  ' キャリッジリターンの削除

    ' JSON Bodyの作成
    Dim jsonBody As String
'    jsonBody = "{""model"":""gpt-3.5-turbo-0125"",""messages"":[{""role"":""system"",""content"":""You are a friendly assistant designed to output a string of answers.""},{""role"":""user"",""content"":""" & safePrompt & """}]}"
    jsonBody = "{""model"":""gpt-4-turbo"",""messages"":[{""role"":""system"",""content"":""You are a friendly assistant designed to output a string of answers.""},{""role"":""user"",""content"":""" & safePrompt & """}]}"

    With httpRequest
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Authorization", "Bearer " & apiKey
        .send jsonBody
        
        ' ステータスコードの確認
        If .Status = 200 Then
            ' JSONレスポンスのパース
            Set json = JsonConverter.ParseJson(.responseText)
            
            ' レスポンスから回答を取り出す
            Dim answer As String
            answer = json("choices")(1)("message")("content")  ' 配列のインデックスやキーはレスポンスの構造に依存します

            'MsgBox "Response: " & answer
            GetOpenAIResponse = answer
            
        Else
            Set json = JsonConverter.ParseJson(.responseText)
            Dim error_message
            error_message = json("error")("message")
        
            GetOpenAIResponse = "Error: " & .Status & " " & .statusText & "mess=" & error_message
        End If
    End With
End Function

excelでセル内に横バー(データバー)をうっすら入れる方法

入れ方

Excelでセル内に横バー(いわゆる背景のバー、またはセル内バーとも言われるグラフィカルな要素)をうっすらと表示させる方法は、条件付き書式を使用して「データバー」という機能を活用することです。この方法では、セルの値に基づいてセル内に色のバーが表示され、視覚的にデータの比較が容易になります。以下に手順を説明します。

データが入力されているセルを選択します。

例えば、A1:A10の範囲にデータがある場合、その範囲を選択します。
「ホーム」タブから「条件付き書式」を選択します。

Excelのリボンメニューの「ホーム」タブを開き、「スタイル」グループ内にある「条件付き書式」ボタンをクリックします。
「データバー」オプションを選択します。

「条件付き書式」メニューが表示されたら、「データバー」を選択します。ここには色々な色のデータバーが用意されています。
希望のデータバースタイルを選択します。

うっすらとしたバーを表示させたい場合は、薄い色のデータバーを選択すると良いでしょう。色の選択肢から好みのものをクリックして適用します。
オプションの調整(任意)。

データバーが適用された後、より細かな設定を行いたい場合は、「条件付き書式」→「ルールの管理」→ 適用されたルールを選択 → 「編集」から、さらに詳細なオプションを調整できます。ここでは、バーの最大値・最小値、バーの色、バーが占めるセル内の領域の幅などを細かく設定できます。
設定を完了し、適用します。

必要な設定が完了したら、「OK」または「適用」をクリックして変更を保存します。選択した範囲のセルに、値の大小に応じて色のバーが表示されるようになります。
この機能を利用することで、数値データを持つセルに対して、その数値の大きさを直感的に理解するのに役立つ視覚的な指標を提供できます。特に大量のデータがある場合や、データの傾向を一目で把握したい時に便利です。

調整の仕方

データバーがどのセルも同じような長さなので、もっと差がはっきり出るようにしたい

データバーが全てのセルで同じような長さになってしまい、数値の差がはっきりと出ない場合は、データバーの設定を調整することで、差をより明確に表示させることができます。特に、データバーの最小値と最大値の設定を見直すことが重要です。以下に手順を説明します。

条件付き書式のルールを編集する

データバーを適用したセル範囲を選択します。
「ホーム」タブの「条件付き書式」をクリックし、「ルールの管理」を選択します。
編集したいルールを選択

「条件付き書式ルールマネージャー」ダイアログボックスが表示されます。データバーのルールを選択し、「編集」ボタンをクリックします。
「最小値」と「最大値」の設定を調整する

「データバーの書式設定」ダイアログボックスで、「最小値」と「最大値」のセクションを確認します。
最小値や最大値の設定が「自動」になっている場合、全てのデータバーが似たり寄ったりの長さになることがあります。これを修正するために、最小値と最大値を「数値」に設定し、具体的な値を入力するか、「パーセント」を選択して範囲内の相対的な値を設定します。
具体的な値を設定する

例えば、データ範囲が0から100までの場合、最小値を「0」、最大値を「100」と具体的に設定することで、データの差がはっきりと表現されるようになります。
設定を保存し、適用する

「OK」をクリックしてダイアログボックスを閉じ、もう一度「OK」をクリックして条件付き書式ルールマネージャーを閉じます。設定が適用され、データバーによる視覚表現が改善されます。
この方法により、データバーの表示がデータの実際の差をより正確に反映するようになります。数値の大小がセルに視覚的に明確に表示されることで、データの分析や比較がさらに容易になるでしょう。

MFC C++でdouble型の変数から小数点以下が0なら整数の文字列、0でないなら小数点以下を含む文字列を生成する

#include <iostream>
#include <iomanip>
#include <sstream>

std::string doubleToStr(double value) {
	std::ostringstream oss;
	if (fmod(value, 1.0) == 0.0) {
		// 小数点以下が0の場合、整数として出力
		oss << std::fixed << int(value);
	}
	else {
		// 小数点以下がある場合、小数点を含めて出力
		oss << std::fixed << std::setprecision(2) << value;
	}

	return oss.str();
}