皆さんこんにちは、横浜で清掃業を営む49歳、ヤスです。
前回は妻を論破!高額ガジェットの「家族稟議書」全自動生成アプリ
を作りましたね!
会議の議事録を作成するのって面倒……。結局忘れてしまって、後で「あぁ!」と頭を抱える。そんな経験、一度や二度じゃないはずです。 そこで今回、私はAI(Dify)とGoogleの力(GAS)を結集させて、**「スマホで録音したボイスメモから議事録を自動生成し、さらに期限付きの予定をカレンダーに勝手に書き込む」**という、魔法のような全自動マシンを完成させました!
かつてプログラミングで挫折した私でも、Difyのブロックを繋ぎ、GASのコードをコピペすることで、ついにこの「未来の道具」を手にすることができたんです。今回、私がハマった「見えない文字(IDエラー)」の回避策や、AIに日付を正確に計算させるプロのコツも余すことなく公開します。49歳、AI再スタートの集大成。中学生でも分かるレベルで、かつ詳細に解説しますので、一緒に作ってみてください!
【結論】 このアプリの正体は、「耳(音声認識)」「脳(LLM)」「手(GAS)」を一本の太いパイプで繋いだバケツリレーです。
具体的には、Difyに搭載した「最強の耳」があなたの声を文字に変え、賢い「脳」がその中から重要なTODOと期限を整理し、最後にGASという「工場」がGoogleドキュメントとカレンダーにその情報を刻み込みます。この仕組みが完成すれば、あなたの声はただの音ではなく、**「勝手に仕事を進めてくれるデジタル資産」**に変わります!
【手順:全自動議事録マシンの作り方】
ステップ1:GASで「ドキュメント&カレンダー登録工場」を作る
まずは受け皿となるGASの設定です。Googleドライブの「新規」→「その他」→「Google Apps Script」を開き、以下のコードを貼り付けてください。
JavaScript
/**
* Difyから届いたデータを受け取り、書類作成とカレンダー登録を行うメイン関数
* @param {Object} e - Difyからポストされたデータ
*/
function doPost(e) {
// ★安全装置(try-catch):エラーが起きた時に原因を特定しやすくします
try {
// 1. Difyから届いたJSONデータを解析(デコード)します
const params = JSON.parse(e.postData.contents);
const title = params.title; // 会議や案件の名前
const summary = params.summary; // AIがまとめた要約
const todo = params.todo; // AIが抽出した具体的なTODO
const dueDate = params.dueDate; // AIが推測・計算した期限日(YYYY-MM-DD形式)
// 2. フォルダを「名前」で探す(★ヤス流:IDコピペミスによるエラーを100%防ぐ裏技)
const folderName = "AI議事録保管庫";
const folders = DriveApp.getFoldersByName(folderName);
const folder = folders.hasNext() ? folders.next() : DriveApp.createFolder(folderName);
// 3. Googleドキュメントを新規作成
const fileName = "【議事録】" + title + "_" + Utilities.formatDate(new Date(), "JST", "yyyyMMdd");
const doc = DocumentApp.create(fileName);
const body = doc.getBody();
// 4. ドキュメントに見やすく書き込み
body.insertParagraph(0, "■ 会議議事録: " + title).setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph("\n【作成日】 " + Utilities.formatDate(new Date(), "JST", "yyyy-MM-dd HH:mm"));
body.appendParagraph("\n【要約】\n" + summary);
body.appendParagraph("\n【TODO(やること)】\n" + todo);
body.appendParagraph("\n【期限】 " + dueDate);
// ドキュメントを保存して閉じます
doc.saveAndClose();
// 5. 作成したファイルを指定フォルダへ移動
const file = DriveApp.getFileById(doc.getId());
folder.addFile(file);
DriveApp.getRootFolder().removeFile(file);
// 6. ★目玉機能:Googleカレンダーへの自動登録
// デフォルトのカレンダーを取得し、終日の予定として登録します
const calendar = CalendarApp.getDefaultCalendar();
const date = new Date(dueDate); // AIが算出した日付をカレンダー用に変換
calendar.createAllDayEvent("【TODO期限】" + title + ": " + todo, date);
// Dify側に「大成功!」という通知を送ります
const result = {
status: "success",
message: "ドキュメント作成とカレンダー登録が完了しました!"
};
return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
// 万が一エラーが起きた場合、その正体をDifyへ報告します
const errorResult = {
status: "error",
message: "GASのエラー原因: " + error.toString()
};
return ContentService.createTextOutput(JSON.stringify(errorResult)).setMimeType(ContentService.MimeType.JSON);
}
}
※重要※ 貼り付けたら「デプロイ」→「新しいデプロイ」を行い、アクセスできるユーザーを**「全員」**にして、発行された/execで終わるURLを必ず控えておいてください。
ステップ2:Difyで全体の「ワークフロー」を組む
Difyのダッシュボードから「ワークフロー」を新規作成します。

① 開始ブロックの設定
入力変数に conference_name(会議名:テキスト型)と audio_file(ファイル型)を設定します。これがアプリの入り口になります。
② 音声認識(オールインワン文字起こし)

「ツール」から音声認識ブロックを追加します。OpenAIのAPIキーを設定し、モデル名には whisper-1 を指定。これでボイスメモが正確なテキストに変換されます。
③ LLMブロック(構造化出力モード)
ここが最大のキモです!「構造化出力」をONにして、AIが整理したデータを分けるための「3つの引き出し」を作ります。
- summary: 要約
- todo: やること
- dueDate: 期限(YYYY-MM-DD) プロンプトには「今日の日付は 2026-04-13 です」と教え、日付計算をさせます。

④ HTTPリクエスト(送信担当)
最後に、整理されたデータをGASに飛ばします。
- メソッド:
POST - URL: ステップ1で控えたGASのURL
- ボディ:
JSONを選択し、各項目にLLMの出力を紐付けます。

【まとめ】 今回の開発を通じて、私が一番感動したのは**「点と点が線で繋がる瞬間」**です。 ボイスメモをスマホで録音し、Difyにアップした数十秒後、私のGoogleカレンダーには「エアコン清掃の見積書作成」という予定がしっかりと刻まれていました。

「そんなの、自分でカレンダーに入力すればいいじゃないか」と思うかもしれません。でも、違うんです。**「自分がやらなくても、AIが私の意思を汲み取って動いてくれた」**という体験が、現場で忙しく立ち回る私に、未来への大きな勇気をくれました。

ドキュメントにも自動で議事録が書き込まれました。
今回はテストだったので簡単なものでしたが、会社の会議の長いボイスメモ
の議事録も自動生成してくれるので便利ですね!
IDエラー、変数の未設定……。何度も赤文字のエラーにぶつかりましたが、一つずつバケツ(変数)を正しく繋ぎ直せば、AIは必ず応えてくれます。49歳、AI再スタート。私のこの挑戦が、同じように一歩踏み出そうとしている同世代の皆さんの背中を少しでも押せれば幸いです。突っ走りましょう!
私のエックスにも遊びに来てください
ではまた次回のアプリを是非お楽しみに!


コメント