【Dify×GAS】声が予定に変わる!ボイスメモから「議事録作成」と「カレンダーTODO登録」を全自動化する神ツールの作り方

DifyとGoogle Apps Script(GAS)を連携させ、音声入力(ボイスメモ)から「議事録作成」と「GoogleカレンダーへのTODO登録」を全自動化する仕組みを解説したブログ第112話のアイキャッチ画像。作業着姿の清掃業者(田中)がスマートフォンに話しかけると、その音声データが光のラインとなってGoogleカレンダーやGoogleドキュメントへ自動変換・整理されていく様子を描いた、実務直結型のDX(デジタルトランスフォーメーション)イメージ図。 Uncategorized

皆さんこんにちは、横浜で清掃業を営む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のダッシュボードから「ワークフロー」を新規作成します。

Difyワークフローの全体図とテスト実行結果画面。音声ファイル(audio_file)の入力から、「オールインワン文字起こし」ノード、LLMによる要約・TODO抽出、そしてGASへデータを飛ばす「HTTPリクエスト」ノードまでが一本の線でつながっている。右側のコンソールには「ドキュメント作成とカレンダー登録が完了しました!」という成功メッセージが表示され、一連の自動化処理が正常に完了した様子。

① 開始ブロックの設定

入力変数に conference_name(会議名:テキスト型)と audio_file(ファイル型)を設定します。これがアプリの入り口になります。

② 音声認識(オールインワン文字起こし)

DifyワークフローのLLMノード(gpt-4o)設定画面。AIに「超一流の秘書であり、会議の要約とタスク管理のスペシャリスト」の役割を与え、音声入力から作成された文字起こしデータ((x) text)を基に、会議の主要な議論点((x) summary)、具体的なアクション((x) todo)、および期限((x) dueDate)を構造化して抽出させるためのシステムプロンプト設定。

「ツール」から音声認識ブロックを追加します。OpenAIのAPIキーを設定し、モデル名には whisper-1 を指定。これでボイスメモが正確なテキストに変換されます。

③ LLMブロック(構造化出力モード)

ここが最大のキモです!「構造化出力」をONにして、AIが整理したデータを分けるための「3つの引き出し」を作ります。

  • summary: 要約
  • todo: やること
  • dueDate: 期限(YYYY-MM-DD) プロンプトには「今日の日付は 2026-04-13 です」と教え、日付計算をさせます。
DifyワークフローのLLMノード(gpt-4o)設定画面。AIに「超一流の秘書であり、会議の要約とタスク管理のスペシャリスト」の役割を与え、音声入力から作成された文字起こしデータ((x) text)を基に、会議の主要な議論点((x) summary)、具体的なアクション((x) todo)、および期限((x) dueDate)を構造化して抽出させるためのシステムプロンプト設定。

④ HTTPリクエスト(送信担当)

最後に、整理されたデータをGASに飛ばします。

  • メソッド: POST
  • URL: ステップ1で控えたGASのURL
  • ボディ: JSON を選択し、各項目にLLMの出力を紐付けます。
Difyワークフローの「HTTPリクエスト」ノード設定画面。音声から抽出した議事録データをGoogle Apps Script(GAS)へ送信するための設定。メソッドを「POST」に指定し、JSON形式のボディで、会議名(title)、要約(summary)、TODO(todo)、期限(dueDate)の4つの変数をGoogleカレンダーやドキュメントへ受け渡すための連携ロジック。

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

DifyとGASの連携により、音声入力から抽出されたTODOがGoogleカレンダーへ自動登録された画面。2026年4月17日の予定として「【TODO期限】現場の打ち合わせ(エアコン清掃):エアコンの清掃の見積書を作成して送付する。」というタスクが、前日の通知設定とともに正確にカレンダーへ反映されている様子。

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

DifyとGASの連携により、音声入力から自動生成・保存されたGoogleドキュメント形式の「会議議事録:現場の打ち合わせ(エアコン清掃)」。【要約】として「エアコン清掃に関する見積書を作成し、送付する必要がある」、【TODO(やること)】として「エアコンの清掃の見積書を作成して送付する」、【期限】として「2026-04-17」が構造化して出力されている実務的な書類画面。

ドキュメントにも自動で議事録が書き込まれました。

今回はテストだったので簡単なものでしたが、会社の会議の長いボイスメモ

の議事録も自動生成してくれるので便利ですね!

IDエラー、変数の未設定……。何度も赤文字のエラーにぶつかりましたが、一つずつバケツ(変数)を正しく繋ぎ直せば、AIは必ず応えてくれます。49歳、AI再スタート。私のこの挑戦が、同じように一歩踏み出そうとしている同世代の皆さんの背中を少しでも押せれば幸いです。突っ走りましょう!

私のエックスにも遊びに来てください

こちらです

ではまた次回のアプリを是非お楽しみに!

コメント

タイトルとURLをコピーしました