
📺 この記事は、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ドライブを開く
- 「+新規」→「その他」→「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等を作成
- 以下のコントロールを配置
| コントロール名 | 用途 | 重要設定 |
|---|---|---|
txtQuestion | AIの回答欄 | MultiLine = True、ScrollBars = 2、`AutoSize = False` |
txtAnswer | ユーザーの入力欄 | - |
btnNext | 送信ボタン | - |
⚠️ つまずきポイント:txtQuestion の AutoSize は必ず 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.txt | Dify LLMノード用システムプロンプト全文 |
gas_code.gs | GAS中継コード全文 |
module1.bas | VBA標準モジュール全文 |
userform.frm | VBAユーザーフォームコード全文 |
リポジトリのREADMEに、各ファイルの使い方も記載する予定です。ダウンロードしてそのまま使っていただいて構いません。自社向けにカスタマイズする際のポイントもREADMEで補足しますので、あわせてご活用ください。
あわせて読みたい解説動画
この記事の内容は、YouTube動画でも画面操作付きで解説しています。文章だけではわかりにくい操作手順は、動画もあわせてご覧ください。
▶ [Excel × GAS × Dify で作る!目標設定 AI コーチ 構築手順【初心者でもできる】](動画リンクは準備中です)
まとめ
- 第1章:Difyでナレッジを登録し、AIの頭脳を作る
- 第2章:GASでAPIキーを安全に隠す中継役を作る
- 第3章:ExcelのフォームとボタンをつないでUIを完成させる
3つのレイヤーを組み合わせることで、専門知識がなくても、社内のExcelから直接AIコーチを呼び出せる仕組みが作れます。ぜひ実際に手を動かして構築してみてください。
質問や不具合があれば、コメント欄やお問い合わせフォームからお気軽にどうぞ。

