MENU

Difyの実行結果をExcel(スプレッドシート)に自動記録する方法

当ページのリンクには広告が含まれています。

「Difyで生成した回答をExcelやスプレッドシートに自動で保存したい」
「実行ログをデータベースとして蓄積して、後で分析したい」

Difyには標準で「結果をExcelに出力する」というブロックはありませんが、Google Apps Script (GAS) と連携させることで、Googleスプレッドシートへの自動書き込みが可能になります。

この記事では、Difyのワークフロー実行結果をGoogleスプレッドシートにリアルタイムで追記していく仕組みの作り方を解説します。

目次

仕組みの概要

Difyから直接スプレッドシートを操作するのではなく、以下の流れでデータを渡します。

  1. Googleスプレッドシートを用意する。
  2. GASで「データを受け取ってシートに書き込むWeb API」を作成する。
  3. Difyのワークフローから、そのAPIに対してデータを送信(HTTPリクエスト)する。

STEP 1:Googleスプレッドシート側の準備

1. スプレッドシートの作成

新規スプレッドシートを作成し、1行目にヘッダー(列名)を入力します。

今回は例として、aaa, bbb, ccc という列名にしておきます。

スプレッドシート作成例

このシートのURLから、「スプレッドシートID」をメモしておいてください。
https://docs.google.com/spreadsheets/d/【この部分】/edit

2. Google Apps Script (GAS) の作成

スプレッドシートのメニューから「拡張機能」→「Apps Script」を開きます。

以下のコードをコピーして貼り付けてください。

function doPost(e) { try { // リクエストボディからデータを取得 const requestData = JSON.parse(e.postData.contents); const fileId = requestData.fileId; // Difyから送るシートID

// スプレッドシートを取得
const sheet = SpreadsheetApp.openById(fileId).getSheets()[0];

// 1行目のヘッダーを取得
const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
const newRow = [];

// ヘッダーに対応するデータをマッピング
headers.forEach(header => {
  newRow.push(requestData[header] || ""); 
});

// 新しい行を追記
sheet.appendRow(newRow);

return ContentService.createTextOutput(JSON.stringify({ status: "success" }))
  .setMimeType(ContentService.MimeType.JSON);
} catch (error) { return ContentService.createTextOutput(JSON.stringify({ status: "error", message: error.message })) .setMimeType(ContentService.MimeType.JSON); } }

3. Webアプリとしてデプロイ

作成したスクリプトを外部(Dify)からアクセスできるように公開します。

  1. 画面右上の「デプロイ」→「新しいデプロイ」をクリック。
  2. 「種類の選択」で「ウェブアプリ」を選択。
  3. アクセスできるユーザー「全員」に設定します。(これが重要です)
  4. 「デプロイ」ボタンを押し、アクセス権限を承認します。
  5. 発行された「ウェブアプリのURL」をコピーしてメモしておきます。
  • 承認を求められるので承認
    その際警告が出る場合があるが、このコードの作成者が信頼できない場合があるという警告です。
    この場合には、「Advanced」を押し「Go to プロジェクト名」を押す


STEP 2:Difyワークフローの設定

Dify側で、データを送信する設定を行います。

1. 環境変数の設定

ワークフロー内の「環境変数」に、先ほどの情報を登録しておくと便利です。

  • endpoint:GASのウェブアプリURL
  • sheetFileId:スプレッドシートID
環境変数の設定画面

2. HTTPリクエストノードの追加

ワークフローの最後に「HTTPリクエスト」ノードを追加し、以下のように設定します。

  • URL:環境変数の endpoint を選択
  • メソッド:POST
  • ボディ:「JSON」を選択し、以下のように記述します。
{ "fileId": "{{#env.sheetFileId#}}", "aaa": "{{#直前のノード.出力変数1#}}", "bbb": "{{#直前のノード.出力変数2#}}", "ccc": "固定値も入力可能" }

※キー名(aaa, bbb)は、スプレッドシートの1行目に書いたヘッダー名と完全に一致させる必要があります。

HTTPリクエストの設定

まとめ

この仕組みを使えば、Difyで生成したブログ記事の案や、要約したニュース、顧客からの問い合わせ内容などを、自動的にスプレッドシート(Excel)に蓄積していくことができます。

一度設定してしまえば、あとはDifyを実行するだけでデータが溜まっていくため、業務効率化の強力な武器になります。

【推奨】業務システム化に有効なアイテム

生成AIを学ぶ

システム化のパートナー

VPSサーバの選定

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次