0
0

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からGAS経由でスプレッドシートに書き込む方法、最初の一歩

0
Posted at

Difyのチャットフローを利用して、LLMが生成した内容をGoogle Apps Script(GAS)経由でGoogleスプレッドシートへ保存する方法を解説します。

1. まず、Dify側の準備

Difyで「チャットフロー」を作成します。
スクリーンショット 2026-02-11 15.32.12.png

続いて、LLMノードを追加します。
ユーザーからの入力を適当に加工してもらうことにします。
スクリーンショット 2026-02-11 16.02.49.png

AIモデルにGeminiを使っている場合、SYSTEMではなくUSERにプロンプトを入力しないとエラーになることがあります。
ただ、この辺りの仕組みは正直よくわかっていません…

LLMノードをさらに追加します。
先ほどの出力結果をJSON形式に変換します。
スクリーンショット 2026-02-11 15.47.28.png

2. ここでいったん、GAS側の準備

スプレッドシート側で、データを受け取るためのGASを作成します。

function doPost(e){
  try{
    const jsonData = JSON.parse(e.postData.contents);
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
    const currentDate = new Date();

    const data = {
      timestamp: currentDate,
      title: jsonData.title || ''
    };

    sheet.appendRow([data.timestamp, data.title]);
  
    return ContentService.createTextOutput(JSON.stringify({status: 'success'}))
      .setMimeType(ContentService.MimeType.JSON);

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

このコードでは、以下の処理を行っています。

  • 受信したPOSTデータをJSONとして解析
  • タイムスタンプとJSON内の title を取得
  • 指定したシートの末尾に行を追加
  • 処理結果をJSONで返却

コードの記述後、「ウェブアプリ」 としてデプロイします。
Difyからアクセスできるよう、アクセス権限は 「全員」 に設定します。

3. Difyに戻って、設定の続き

Difyのフローに戻り、「HTTPリクエスト」ノードを追加します。

  • メソッド: POST
  • URL: 先ほど公開したGASのウェブアプリURL
  • ボディ: JSONを選択し、LLMノードで生成された変数を割り当てます
    スクリーンショット 2026-02-11 15.50.25.png
    スクリーンショット 2026-02-11 15.50.43.png
    これで、LLMの出力結果をGASへ送信できるようになります。

4. 実行結果の判定

GASからのレスポンスを受け取り、成否を判定するために「IF/ELSE」ノードを追加します。

受信したJSONに success という文字列が含まれているかどうかにより、成功・失敗を判定します。
スクリーンショット 2026-02-11 15.55.32.png

成功・失敗それぞれの分岐に「回答」ノードを接続し、各LLMノードで出力したテキストを返すようにしておきます。
スクリーンショット 2026-02-11 15.57.58.png

これで完成。全体像はこちら。
GAS連携-whole-workflow.png

5. 動作確認

適当なテキストを入力して実行してみると、
スクリーンショット 2026-02-11 16.09.17.png
スクリーンショット 2026-02-11 16.09.42.png
LLMが生成したタイトルが、スプレッドシートに自動で入力されることが確認できました。

まとめ

この仕組みを応用することで、対話内容から必要な項目を抽出して保存したり、アップロードされた画像の分析結果を保存するなど、チャットやファイルをデータベース化するという処理ができそうです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?