人事2026-06-2538分で読めます

Excel × GAS × Dify で作る「目標設定 AI コーチ」完全構築ガイド

目標管理制度における目標設定をAIが支援して、レベル感のそろった目標を立てることができるようになります。

広告

728 × 90

📺 この記事は、YouTube動画「Excel × GAS × Dify で作る!目標設定 AI コーチ 構築手順」と合わせてご覧いただくと、より理解しやすくなります。

画面操作の手順など、文章では伝わりにくい部分は動画で補足していますので、ぜひあわせてご活用ください。

▶ [動画はこちら](動画URLをここに入れてください)

人事・総務の担当者の方、こんな悩みはありませんか?

「目標設定のシートを配っても、書き方がバラバラで品質が揃わない」

「社員一人ひとりに丁寧にフィードバックしたいけど、人数が多くて時間が足りない」

そんな課題を、AIが対話しながら自動でサポートしてくれる仕組みを、この記事ではゼロから解説します。プログラミングの知識がなくても大丈夫です。順番に一緒に進めていきましょう。

この記事でできるようになること

Excelのボタンをクリックするだけで、AIコーチが起動します。

「あなたの職種・等級と、今期の担当業務を教えてください」とAIが話しかけ、対話を重ねながら目標を一緒にブラッシュアップし、最終的に目標管理シートへ自動で書き込んでくれる――そんな仕組みを構築します。

  • 目標の書き方が統一され、レベルも揃う
  • 目標が明確になり、達成率の向上につながる
  • 何日もかかっていた目標設定の作業が、対話だけでスムーズに完了する

社員の負担も、上長の修正作業も、人事担当者の確認工数も、大幅に削減できます。

システムの全体構成

このシステムは、3つのレイヤーで構成されています。

レイヤー役割使用ツール
① AIの頭脳社内ルールを学習し、対話形式で目標設定を支援するDify
② 安全な中継地点ExcelとDifyの間でAPIキーを隠して通信を仲介するGoogle Apps Script(GAS)
③ ユーザーインターフェース社員が実際に操作する画面Excel VBA

それぞれの役割を、もう少し具体的に見ていきましょう。

第1章:Difyの設定(AIの頭脳を作る)

Difyとは

Dify は、プログラミングの知識がなくてもAIアプリを作れるノーコードサービスです。今回は無料プランで構築できます。

アカウントをお持ちでない方は、Difyのサイトから「Get Started」を選び、メールアドレスで登録してください。

RAG(ラグ)という考え方

ナレッジの設定に入る前に、一つ大事な概念を説明します。「RAG(Retrieval-Augmented Generation)」という考え方です。

少し難しい言葉ですが、仕組みはとてもシンプルです。

たとえば、新入社員が入ってきたとします。どんなに優秀な社員でも、会社独自のルールや制度は最初から知りません。そこで、業務マニュアルを渡して「これを読んで仕事してね」と伝えますよね。

RAGはまさにこれと同じです。AIは最初から会社の評価制度や目標設定のルールを知りません。そこで「社内ルールが書かれた資料」をAIに渡して、「これを参考に回答してね」と指示するのがRAGの考え方です。

Difyでは、この「渡す資料」のことを「ナレッジ」と呼びます。

必要な4つのナレッジ

今回の目標設定AIコーチには、以下の4つのナレッジを用意します。全文は記事末尾のGitHubリポジトリから取得できます。

ナレッジ① 制度・ルールナレッジ

評価サイクル・スケジュール、目標数とウェイト配分ルール、5段階評価スケールの定義と分布ガイドライン、禁止事項、AIへの動作指示を収録。

特に重要なのがウェイト基準表です。ウェイトは「目標の難易度」と「等級(役職)」の両方で決まる、という考え方を採用しています。

部長と係長が同じ目標を掲げた場合、難易度は同じであっても等級が異なるため、係長のほうがウェイトは高くなります。部長がその目標で高いウェイトを得るためには、部長の役割等級基準に見合った、より高い水準の目標にチャレンジする必要があります。

これにより、「同じ目標でも、より高い等級の人ほど高いウェイトを得るには、より高いレベルの目標が求められる」という、役割等級に応じた公平な評価設計が可能になります。

ナレッジ② 目標品質基準ナレッジ

SMARTの原則(自社解釈版)、目標文の構造テンプレート、良い目標・悪い目標の比較例、NGパターン集と修正指針、10項目の品質チェックリストを収録。

AIがこのナレッジを参照することで、単に目標を書くだけでなく「質の高い目標かどうか」を判定し、改善提案を行えるようになります。

ナレッジ③ 職種・等級別ナレッジ

G1〜M3の等級体系と期待役割定義、営業・開発・管理部門・マーケティングの等級別目標例集、管理職の特別ルール(チーム目標・育成目標の必須要件)を収録。

社員の等級・職種に応じて、適切な水準の目標例を提示できるようになります。

ナレッジ④ 会社戦略・方針ナレッジ

中期経営計画・年度スローガン、全社4テーマの重点施策、部門別施策と個人目標への反映例、経営キーワード(DX・LTV・心理的安全性など)を収録。

これにより、個人の目標が会社の方向性と整合しているかをAIが確認できるようになります。

ナレッジ登録の手順

  • Difyにログインし、上部の「ナレッジ」タブをクリック
  • 「知識を作成」をクリックし、4つのファイルをアップロード
  • 検索設定は必ず「高品質(High Quality)」+「ハイブリッド検索(Hybrid Search)」を選択

⚠️ つまずきポイント:検索設定はデフォルトのままだと精度が落ちます。「高品質」と「ハイブリッド検索」の2つを必ず選んでください。これだけで回答の精度が大きく向上します。

チャンク分けについて

Difyはナレッジを登録するとき、文書をいくつかの「塊(チャンク)」に分割して保管します。ユーザーが質問すると、その質問に関係しそうなチャンクだけを取り出してAIに渡す、という仕組みになっています。

このチャンクの分け方が適切でないと、必要な情報がうまく取り出せず、AIが的外れな回答をしてしまいます。

今回のナレッジはMarkdownの見出し(H2)単位で内容が整理されているため、Difyの「自動」設定でも適切にチャンク分割されます。もし回答の精度に違和感がある場合は、チャンク設定を見直してみてください。

チャットフローの作成

「スタジオ」タブから「チャットフロー」を新規作成し、以下の順にノードをつないでいきます。

ステップノード設定内容
開始ノード入力変数 を割り当て
知識検索ノード①で作成した4つのナレッジを割り当て
LLMノードコンテキストに知識検索ノードの出力を割り当て、システムプロンプトを貼り付け
回答ノードLLMノードの出力(text)を割り当て

ナレッジとシステムプロンプトの関係

このシステムの山場とも言えるのが、ナレッジとシステムプロンプトの2つです。

新入社員にたとえると、ナレッジは「業務マニュアル・規定集」=「何を知っているか」、システムプロンプトは「上司からの指示書」=「どう動くか」にあたります。

マニュアルだけ渡しても、人は動けません。「あなたの役割はこうです。こういう順番で進めてください。ゴールはこれです」という指示があって、はじめて動けます。この2つが揃って、はじめてAIコーチが完成します。

システムプロンプトの全文

以下のプロンプトを、LLMノードのSYSTEM欄に貼り付けてください。全文はGitHubリポジトリからもコピーできます。

⚠️ つまずきポイント:プロンプト内の「最終出力は必ず { で始め、コードブロックは使わない」というルールが命綱です。ここが守られないとVBA側でJSON解析エラーになります。

公開とAPIキーの取得

チャットフローが完成したら、右上の「公開する」をクリックし、「APIリファレンス」から APIキーエンドポイントURL をメモしておきます。次の章で使用します。

第2章:GASの設定(安全な中継地点)

なぜGASが必要なのか

少し寄り道して、なぜGASが必要なのかを説明します。

Excelファイルは、社内で複数の人が使ったり、メールで送ったりしますよね。もしExcelの中にAPIキーを直接書いてしまうと、ファイルを受け取った人が中身を見て、キーを悪用してしまう可能性があります。

しかも、Excelシートは例えば従業員が100人いれば100人に配布することになります。VBAのマクロコードは、Excelを開いた人なら誰でも見ることができるため、APIキーを直接書き込んでしまうと、100人にAPIキーをばらまくことになってしまうのです。

そこで、APIキーを「Google Apps Script(GAS)」というGoogleのサービスの中に隠します。Excelは「GASのURL」だけを持てばよくなるので、GASを挟むことでAPIキーを1か所に集約して管理でき、何人に配布しても漏洩リスクはゼロになります。

GASプロジェクトの作成

  • 「+新規」→「その他」→「Google Apps Script」をクリック
  • プロジェクト名をわかりやすい名前に変更(例:「Dify中継GAS」)

コードの貼り付け

エディタにデフォルトで書かれているコードをすべて削除し、以下のコードを貼り付けます。全文はGitHubリポジトリから取得できます。

javascript

`const PROP_KEY = "conversation_id";

function doPost(e) {

const difyApiKey = "YOUR_DIFY_API_KEY"; // ★第1章でメモしたAPIキー

const difyUrl = "https://api.dify.ai/v1/chat-messages";

const requestBody = JSON.parse(e.postData.contents);

const props = PropertiesService.getScriptProperties();

const savedConversationId = props.getProperty(PROP_KEY) || "";

const difyPayload = {

"inputs": requestBody.inputs || {},

"query": requestBody.query,

"response_mode": "blocking",

"user": "excel_user",

"conversation_id": savedConversationId

};

const options = {

"method": "post",

"headers": {

"Authorization": "Bearer " + difyApiKey,

"Content-Type": "application/json"

},

"payload": JSON.stringify(difyPayload),

"muteHttpExceptions": true

};

const MAX_RETRY = 3;

let response, responseText;

for (let attempt = 1; attempt <= MAX_RETRY; attempt++) {

response = UrlFetchApp.fetch(difyUrl, options);

responseText = response.getContentText();

try {

const parsed = JSON.parse(responseText);

if (parsed.conversation_id) {

props.setProperty(PROP_KEY, parsed.conversation_id);

}

return ContentService

.createTextOutput(JSON.stringify(parsed))

.setMimeType(ContentService.MimeType.JSON);

} catch (jsonErr) {

if (attempt < MAX_RETRY) {

Utilities.sleep(2000);

} else {

return ContentService

.createTextOutput(JSON.stringify({

"error": true,

"message": "Dify APIエラー(" + MAX_RETRY + "回リトライしても失敗): " + responseText

}))

.setMimeType(ContentService.MimeType.JSON);

}

}

}

}

function resetConversation() {

PropertiesService.getScriptProperties().deleteProperty(PROP_KEY);

}`

YOUR_DIFY_API_KEY の部分を、第1章でメモしたAPIキーに書き換えてください。

💡 ポイントconversation_id をスクリプトプロパティに保存することで、対話の文脈を維持しています。新しいテストを始めるときは resetConversation 関数を手動実行してリセットしてください。

デプロイ(Webアプリとして公開)

  • 右上の「デプロイ」→「新しいデプロイ」をクリック
  • 種類の選択(歯車マーク)で「ウェブアプリ」を選択
  • 「実行するユーザー」を自分、「アクセスできるユーザー」を全員にしてデプロイ
  • 表示されたウェブアプリのURLをメモする(これがExcelの通信先になります)

⚠️ つまずきポイント:コードを修正した場合は、必ず「新しいデプロイ」を選び直すか、デプロイの「編集」から「新バージョン」を選んでください。上書き保存だけでは変更が反映されません。

第3章:Excel VBAの設定(ユーザーインターフェース)

なぜExcelと連携するのか

ここまでで目標設定支援AIは完成しました。しかし、このアプリを公開しただけでは、従業員に使ってもらえない可能性があります。

AIだけを公開した場合、わざわざ別のアプリを開く手間がかかり、結果を自分でシートにコピーする必要があり、「面倒くさい」と感じて使われなくなってしまいます。

そこで、実際の目標設定に使われているExcelシートからAIを呼び出し、結果を直接シートに書き込むことで、従業員が普段使いのExcelのボタンを押すだけでAIコーチを利用できる環境を作ります。これが、Excel連携の最大のねらいです。

事前準備(ライブラリの導入)

  • Excelで「開発」タブ→「Visual Basic」を開く
  • メニュー「ツール」→「参照設定」を開き、以下2つにチェックを入れる
  • VBA-JSONのGitHubから JsonConverter.bas をダウンロードし、「ファイル」→「ファイルのインポート」で読み込む

標準モジュール(通信と書き込みロジック)

「挿入」→「標準モジュール」でModule1を作成し、以下のコードを貼り付けます。全文はGitHubリポジトリから取得できます。

vba

`Option Explicit

' --- 1. GAS経由でDifyを呼び出す ---

Function CallDifyAPI(userInput As String) As String

Dim http As Object

Dim url As String

Dim payload As String

Dim response As String

' ★第2章でメモしたGASのウェブアプリURLをここに貼る

url = "https://script.google.com/macros/s/YOUR_GAS_URL/exec"

Set http = CreateObject("WinHttp.WinHttpRequest.5.1")

' 特殊文字をエスケープ(改行・引用符など)

Dim safeInput As String

safeInput = userInput

safeInput = Replace(safeInput, "\", "\\")

safeInput = Replace(safeInput, """", "\""")

safeInput = Replace(safeInput, vbCrLf, "\n")

safeInput = Replace(safeInput, vbCr, "\n")

safeInput = Replace(safeInput, vbLf, "\n")

safeInput = Replace(safeInput, vbTab, "\t")

payload = "{""inputs"": {}, " & _

"""query"": """ & safeInput & """, " & _

"""response_mode"": ""blocking"", " & _

"""user"": ""excel_user""}"

With http

.Open "POST", url, False

.SetRequestHeader "Content-Type", "application/json"

.Send payload

response = .ResponseText

End With

' 回答テキスト部分の抽出(スペースあり/なし両対応)

Dim startPos As Long, endPos As Long

startPos = InStr(response, """answer"": """)

If startPos > 0 Then

startPos = startPos + 11

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

If endPos = 0 Then endPos = InStr(startPos, response, """, ""metadata""")

End If

If startPos = 0 Then

startPos = InStr(response, """answer"":""")

If startPos > 0 Then

startPos = startPos + 10

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

If endPos = 0 Then endPos = InStr(startPos, response, """, ""metadata""")

End If

End If

If startPos > 0 And endPos > startPos Then

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

CallDifyAPI = Replace(CallDifyAPI, "\n", vbCrLf)

CallDifyAPI = Replace(CallDifyAPI, "\""", """")

CallDifyAPI = Replace(CallDifyAPI, "**", "")

Else

CallDifyAPI = "エラーが発生しました。" & response

End If

End Function

' --- 2. JSONを解析してシートへ書き込む ---

Sub WriteResultToSheet(jsonText As String)

On Error GoTo JsonErr

Dim cleanText As String

cleanText = jsonText

cleanText = Replace(cleanText, "`json", "")

cleanText = Replace(cleanText, "`", "")

Dim cleanedJson As String, targetText As String

Dim startPos As Long, endPos As Long

targetText = StrConv(cleanText, vbNarrow)

startPos = InStr(targetText, "{")

endPos = InStrRev(targetText, "}")

If startPos > 0 And endPos > startPos Then

cleanedJson = Mid(targetText, startPos, endPos - startPos + 1)

cleanedJson = Trim(cleanedJson)

Else

Err.Raise 10002, , "JSONが見つかりません。AIの回答を確認してください。"

End If

Dim json As Object

Set json = JsonConverter.ParseJson(cleanedJson)

On Error Resume Next

Dim isFinal As Boolean

isFinal = json("is_final")

On Error GoTo JsonErr

If Not isFinal Then

MsgBox "最終確定フラグがありません。対話が完了していない可能性があります。", vbExclamation

Exit Sub

End If

Call WriteGoalsToSheet(json)

Exit Sub

JsonErr:

MsgBox "解析エラー: " & Err.Description & vbCrLf & vbCrLf & _

"--- 受信テキスト(先頭200文字)---" & vbCrLf & Left(jsonText, 200), _

vbCritical, "JSON解析エラー"

End Sub

' --- 3. シートへの実書き込み処理 ---

Sub WriteGoalsToSheet(json As Object)

On Error GoTo WriteErr

Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("目標管理シート")

If ws Is Nothing Then

MsgBox "「目標管理シート」が見つかりません。", vbCritical

Exit Sub

End If

Const DATA_START_ROW As Integer = 5

Const ROWS_PER_GOAL As Integer = 5

Const MAX_GOALS As Integer = 5

Const TOTAL_ROW As Integer = 30

' 空いている目標スロットを探す

Dim targetSlot As Integer

targetSlot = 0

Dim k As Integer

For k = 1 To MAX_GOALS

Dim checkRow As Integer

checkRow = DATA_START_ROW + (k - 1) * ROWS_PER_GOAL

If Trim(CStr(ws.Cells(checkRow, 2).Value)) = "" Then

targetSlot = k

Exit For

End If

Next k

If targetSlot = 0 Then targetSlot = MAX_GOALS

Dim startRow As Integer

startRow = DATA_START_ROW + (targetSlot - 1) * ROWS_PER_GOAL

' A列:No.

Dim noRange As Range

Set noRange = ws.Range(ws.Cells(startRow, 1), ws.Cells(startRow + ROWS_PER_GOAL - 1, 1))

On Error Resume Next

noRange.UnMerge

On Error GoTo WriteErr

noRange.Merge

noRange.Value = targetSlot

noRange.HorizontalAlignment = xlCenter

noRange.VerticalAlignment = xlCenter

' B列:業績目標

Dim achRange As Range

Set achRange = ws.Range(ws.Cells(startRow, 2), ws.Cells(startRow + ROWS_PER_GOAL - 1, 2))

On Error Resume Next

achRange.UnMerge

On Error GoTo WriteErr

achRange.Merge

achRange.Value = json("achieve_value")

achRange.WrapText = True

achRange.VerticalAlignment = xlTop

' C列:行動目標(1行ずつ)

Dim actions As Object

Set actions = json("action_plans")

Dim j As Integer

For j = 1 To ROWS_PER_GOAL

Dim actionRow As Integer

actionRow = startRow + j - 1

If j <= actions.Count Then

ws.Cells(actionRow, 3).Value = actions(j)

End If

ws.Cells(actionRow, 3).WrapText = True

Next j

' D列:ウェイト

Dim wtRange As Range

Set wtRange = ws.Range(ws.Cells(startRow, 4), ws.Cells(startRow + ROWS_PER_GOAL - 1, 4))

On Error Resume Next

wtRange.UnMerge

On Error GoTo WriteErr

wtRange.Merge

wtRange.Value = json("challenge_type")

wtRange.HorizontalAlignment = xlCenter

wtRange.VerticalAlignment = xlCenter

' 合計ウェイトの再計算

Dim totalWeight As Double

totalWeight = 0

Dim m As Integer

For m = 1 To MAX_GOALS

Dim wtVal As String

wtVal = Trim(CStr(ws.Cells(DATA_START_ROW + (m - 1) * ROWS_PER_GOAL, 4).Value))

wtVal = Replace(wtVal, "%", "")

If IsNumeric(wtVal) Then totalWeight = totalWeight + CDbl(wtVal)

Next m

ws.Cells(TOTAL_ROW, 4).Value = totalWeight & "%"

ws.Cells(TOTAL_ROW, 4).Font.Color = IIf(totalWeight <> 100, RGB(192, 0, 0), RGB(0, 0, 0))

ws.Activate

MsgBox "目標 No." & targetSlot & " を書き込みました。" & vbCrLf & _

"現在の合計ウェイト:" & totalWeight & "%", vbInformation

Exit Sub

WriteErr:

MsgBox "シート書き込みエラー: " & Err.Description, vbCritical

End Sub`

YOUR_GAS_URL の部分を、第2章でメモしたGASのウェブアプリURLに書き換えてください。

ユーザーフォーム(UI)の作成

  • 「挿入」→「ユーザーフォーム」で frmGoalCoach 等を作成
  • 以下のコントロールを配置
コントロール名用途重要設定
txtQuestionAIの回答欄MultiLine = TrueScrollBars = 2`AutoSize = False`
txtAnswerユーザーの入力欄-
btnNext送信ボタン-

⚠️ つまずきポイントtxtQuestionAutoSize は必ず False に設定してください。ここが True のままだと、長い文章が返ってきたときにスクロールバーが消失します。

フォームのコード画面に以下を貼り付けます。

vba

`Private turnCount As Integer

Private Sub UserForm_Initialize()

turnCount = 0

txtQuestion.AutoSize = False

txtQuestion.MultiLine = True

txtQuestion.ScrollBars = fmScrollBarsVertical

txtQuestion.WordWrap = True

txtQuestion.Text = "AIコーチに接続中です。しばらくお待ちください..."

Me.Repaint

Me.MousePointer = fmMousePointerHourGlass

DoEvents

Dim res As String

On Error GoTo InitErr

res = Module1.CallDifyAPI("開始")

On Error GoTo 0

Me.MousePointer = fmMousePointerDefault

txtQuestion.Text = res

turnCount = 1

txtAnswer.SetFocus

Exit Sub

InitErr:

Me.MousePointer = fmMousePointerDefault

txtQuestion.Text = "接続に失敗しました。GASのURLや接続状況を確認してください。" & vbCrLf & Err.Description

btnNext.Enabled = False

End Sub

Private Sub btnNext_Click()

If Trim(txtAnswer.Text) = "" Then

MsgBox "回答を入力してください。", vbExclamation

Exit Sub

End If

btnNext.Enabled = False

btnNext.Caption = "送信中..."

Me.MousePointer = fmMousePointerHourGlass

DoEvents

Dim userInput As String

userInput = Trim(txtAnswer.Text)

Dim res As String

On Error GoTo ApiErr

res = Module1.CallDifyAPI(userInput)

On Error GoTo 0

Me.MousePointer = fmMousePointerDefault

btnNext.Enabled = True

btnNext.Caption = "送信 ▶"

turnCount = turnCount + 1

If (InStr(res, "{") > 0 And InStr(res, """is_final""") > 0) Or _

(InStr(res, "`json") > 0 And InStr(res, "is_final") > 0) Then

txtQuestion.Text = "目標設定が完了しました。シートへ書き込んでいます..."

DoEvents

Call Module1.WriteResultToSheet(res)

Unload Me

Else

txtQuestion.AutoSize = False

txtQuestion.Text = res

DoEvents

txtQuestion.SelStart = 0

txtQuestion.SelLength = 0

txtAnswer.Text = ""

txtAnswer.SetFocus

Me.Repaint

End If

Exit Sub

ApiErr:

Me.MousePointer = fmMousePointerDefault

btnNext.Enabled = True

btnNext.Caption = "送信 ▶"

MsgBox "通信エラーが発生しました。GASのURLや接続状況を確認してください。" & vbCrLf & _

"エラー詳細: " & Err.Description, vbCritical

End Sub`

起動ボタンの設定

標準モジュールに起動用マクロを追加し、シートのボタンに登録すれば完成です。

vba

`Sub StartGoalCoach()

frmGoalCoach.Show vbModeless

End Sub`

シートの「開発」→「挿入」→「ボタン(フォームコントロール)」でボタンを配置し、StartGoalCoach を登録してください。

完成後の動作イメージ

  • Excelシートの「AIコーチを起動」ボタンをクリック
  • フォームが開き、AIが等級・部署を確認
  • 部門方針を提示し、目標のヒアリングを開始
  • 1問1答形式で5〜7ターン対話し、目標をブラッシュアップ
  • 「これで確定します」と伝えると、目標管理シートに自動で書き込まれる

うまく動かないときの対処法

思うように動かないときは、次の順番で試してください。

  • プロンプトを修正する:動きがおかしいときの原因の大半はここにあります。「2つ質問してくる」「途中でJSONが出る」といった症状はプロンプトで直せることがほとんどです。
  • ナレッジを見直す:回答の内容がズレているときは、ナレッジに必要な情報が不足しているか、ノイズが混ざっているケースが多いです。
  • Difyのアノテーション機能を使う:左側メニューの「ログと注釈」から問題のある会話ログを開き、「注釈を追加」で正しい回答を直接登録できます。プロンプトもナレッジも直しにくいけど特定の場面だけおかしい、というときに効果的です。
  • LLMを変える:同じプロンプトでも使用するモデルによって精度や日本語の自然さが変わります。Claude、GPT-4o、Geminiなどを試してみてください。

一度に複数を変えず、1つずつ試して原因を切り分けるのがコツです。

配布ファイル一覧(GitHub)

このシステムの構築に必要なファイル一式を、GitHubリポジトリで無料公開しています。

🔗 GitHubリポジトリ:[こちらから取得](リポジトリURLは準備中です。確定後にこちらに掲載します)

ファイル内容
knowledge_01_制度ルールナレッジ.txt制度・ルールナレッジ
knowledge_02_目標品質基準ナレッジ.txt目標品質基準ナレッジ
knowledge_03_職種等級別ナレッジ.txt職種・等級別ナレッジ
knowledge_04_会社戦略方針ナレッジ.txt会社戦略・方針ナレッジ
system_prompt.txtDify LLMノード用システムプロンプト全文
gas_code.gsGAS中継コード全文
module1.basVBA標準モジュール全文
userform.frmVBAユーザーフォームコード全文

リポジトリのREADMEに、各ファイルの使い方も記載する予定です。ダウンロードしてそのまま使っていただいて構いません。自社向けにカスタマイズする際のポイントもREADMEで補足しますので、あわせてご活用ください。

あわせて読みたい解説動画

この記事の内容は、YouTube動画でも画面操作付きで解説しています。文章だけではわかりにくい操作手順は、動画もあわせてご覧ください。

▶ [Excel × GAS × Dify で作る!目標設定 AI コーチ 構築手順【初心者でもできる】](動画リンクは準備中です)

まとめ

  • 第1章:Difyでナレッジを登録し、AIの頭脳を作る
  • 第2章:GASでAPIキーを安全に隠す中継役を作る
  • 第3章:ExcelのフォームとボタンをつないでUIを完成させる

3つのレイヤーを組み合わせることで、専門知識がなくても、社内のExcelから直接AIコーチを呼び出せる仕組みが作れます。ぜひ実際に手を動かして構築してみてください。

質問や不具合があれば、コメント欄やお問い合わせフォームからお気軽にどうぞ。

広告

728 × 90