6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Difyの結果をExcelに追記していく

Last updated at Posted at 2024-11-07

Difyは結果のExcel出力のようなブロックがなかったので
Google Apps Script(以下GAS) を使用して、GoogleSpreadSheetに結果を記録していくスクリプトを作りました。
ちなみに入力の方はバッチ実行でcsvファイルを設定可能なのでDify内だけでできます。

GoogleDrive側の手順

Google Apps Script プロジェクトを作成

Google Drive上で「+新規」→「その他」→「Apps Script」を開き、新しいプロジェクトを作成します。
image.png

スクリプトコードを追加

次のコードをプロジェクトに貼り付けます。

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

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

    // ヘッダーの列インデックスを取得
    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);
  }
}

Web APIを公開

  • 「デプロイ」→「新しいデプロイ」
  • 歯車アイコン→「ウェブアプリ」
  • アクセス許可を「全員」に設定してデプロイ
    image.png
     
    承認を求められるので承認
    image.png
     
    その際警告が出る場合があるが、このコードの作成者が信頼できない場合があるという警告
    「Advanced」を押し「Go to プロジェクト名」を押す
    image.png

デプロイしたGASのエンドポイント(URL)をメモっておく

IDもあるが今回使うのはURLだけ
image.png

SpreadSheetの準備

任意のSpreadSheetをGoogleDrive上に作成する、
1行目に列名を記載しておく(今回はaaa,bbb,ccc)とする
image.png

またURLを確認し以下の部分をメモっておく
https://docs.google.com/spreadsheets/d/【この部分】/edit?gid=0

image.png

Dify側の設定

環境変数にGAS URLとShpreadSheetのIDを入れておく

今回はendpointとsheetFileIdという環境変数を作成しておく
image.png
image.png
image.png

HTTPリクエストブロックを追加

  • API
    POSTを選択し、環境変数endpointを
  • ボディでjsonを選択し以下のように設定
     {
       "fileId": "環境変数sheetFileId",
       "列名": "データ",
       "列名": "データ"
       ...
     }

image.png
変数の前後に""を忘れがちなので注意

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?