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でSpreadSheetに読み書き & 最終行へ追加

0
Last updated at Posted at 2026-05-01

【1】. DifyでSpreadSheetに読み書きできるようにする

Difyから、SpreadSheetの値を、「読み込む」、「書き込む」 を出来るようにします。

1.google_Sheetsプラグインをインストールする

  1. 右上の プラグイン をクリックしページを開きます。

  2. 左上の マーケットプレイスを探索する をクリックします。

  3. 検索欄にgoogle sheetsと入力し、検索結果の中からgoogle sheetsを見つけクリック、インストールをクリックしインストールを行います。


2.Dify側にGoogleの設定を行います

2-1.Google Cloudを開きます

  1. プラグイン一覧にgoogle sheetsが出来るのでこれをクリック。現れる右画面のAPIキー認証設定をクリックします。

  2. API認証設定画面の、Google スプレッドシートAPIのサービスアカウントJSONキーをクリック、Google Cloudの画面が開きます。

2-2.Google Sheets API を有効にする

  1. 左側メニューの上から2番目の ライブラリ をクリックます

  2. 検索欄に spreadsheet と入力しEnterを押します

  3. 一覧からGoogle Sheets API をクリックします

  4. 有効にする をクリックします

2-3.サービス アカウントを作成、Difyに設定する

  1. 左メニュー内の認証情報(鍵のマーク)をクリック、+認証情報を作成をクリック、サービス アカウントをクリックします

  2. ①サービス アカウントの作成
    サービス アカウント名を入力する(画像はmoicen_Dify_Spreadsheet)。
    サービス アカウントIDは自動的に入力される。
    作成して続行をクリックします

  3. ②権限(省略可)の入力
    ロールを選択をクリック、基本編集者を選択し、続行をクリックします
     

  4. 完了をクリックします
    ③は入力省略

  5. ただいま作成したサービス アカウントをクリックします

  6. 上のメニュー内のをクリックします

  7. キーを追加をクリック、新しい鍵を作成をクリックします

  8. JSONにチェックがついていることを確認し、作成をクリックします

  9. JSONのファイルがダウンロードされます

  10. ダウンロードされたJSONファイルを、テキストアプリ等(Windowsではメモ帳)で開き、中身を全部選択しコピーします

  11. Difyの画面に戻り、 APIキー認証設定の画面に入力
    認証情報JSONにコピーしたJSONファイル中身を貼り付けます
    認証名に任意の名前(画像ではmoicen_Dify_Spreadsheet)を入力し、保存をクリックします

  12. 「APIキー認証設定」が、「1 認証」へ変化します

3.Spreadsheetに設定(編集権限)を行います

  1. Google Cloudページで、左メニュー内の認証情報(鍵のマーク)の一覧中の、作成したサービス アカウントをクリックします

  2. 詳細ページの、メールをコピーします

  3. Spreadsheetを開き、右上の共有をクリックします

  4. ユーザー、グループ、スペース、カレンダーの予定を追加にコピーしたメールアドレスをペーストし、完了をクリックます。

    送信をクリックします

  5. 新しいユーザーが追加されました

4. ワークフローを立ち上げる

  1. アプリを再度、新規作成します

  2. 「ワークフロー」を選択し、名前を入力(画像ではSpreadsheet_read_wright)して、作成するボタンをクリックしましょう。

  3. このような画面が立ち上がります。

5. Spreadsheetの値を、「読み込み」できるワークフローを作成する

  1. ユーザー入力ノードのをクリック、上メニューのツールを選択、Google スプレッドシートBatch Getをクリックします
    ※Batch Get:スプレッドシート上の値を取得するノード

  2. ユーザー入力ノード設定画面の入力フィールド右側のをクリック、入力フィールドを新規作成する
    フィールドタイプ: 短文
    変数名: input
    最大長: 48
    保存をクリックします
     
     


  3. スプレッドシートのURL欄よりSpreadsheet IDをコピーする
    ※補足: URLの/d/の後ろから/までがIDとなります。
    https://docs.google.com/spreadsheets/d/(この部分)/edit?gid=0#gid=0
    このとき、シート1のA1セルに何か文字を入力(画像ではこんにちは。

  4. DifyのBATCH GETの設定画面へ入力
    ワークスペースのデフォルトをクリックし、先ほど作成したAPIキー(画像ではmoicen_Dify_Spreadsheet)を選択する
    Spreadsheet ID: Spreadsheet ID(先ほどコピーした)
    Ranges: [シート1!A1]
    Data Time Render Option: SELIAL_NUMBER(デフォルトのまま)
    Major Dimention: ROWS

  5. BATCH GETノードのをクリック、テンプレートを選択する
    BATCH GETで取得した値はJSON形式なので、テンプレートノードにて後のノードに渡せる様に変換する

  6. テンプレートノードの設定
    入力変数に左枠にsheetA1と入力、右枠にBATCH GETの{x}jsonを選択する
    コード枠内に、{{ sheetA1 }} と入っていることを確認する

  7. 出力ノードを設定する
    テンプレートノードのをクリック、出力をクリックします
    出力変数の右側をクリック、にテンプレートの{x} outputを選択します



  8. テスト実行をクリック、実行してみましょう
    実行結果が画像の様になれば成功です

  9. Spreadsheetの値のみ取り出します
    現在の実行結果で得られた値はJSONの中身そのまま全部です。ここからSpreadsheetの値の部分のみ抜き出します
    以下のコードをテンプレートノードに入力します

    {{ sheetA1[0]['valueRanges'][0]['values'][0][0] }}
    
  10. 再びテスト実行をクリック、実行してみましょう
    実行結果が画像の様にSpreadsheetのシート1のA1セルの値が出力されれば成功です

6. Spreadsheetに、値を「書き込み」できるワークフローを追加する

  1. テンプレートノードと出力ノードの間の線上のをクリック、上メニューのツールを選択、Google スプレッドシートBatch Updateをクリックします
    ※Batch Update:スプレッドシートに、値を書き込むノード

  2. スプレッドシートのURL欄よりSpreadsheet IDをコピーする

  3. DifyのBATCH UPDATEの設定画面へ入力
    ワークスペースのデフォルトをクリックし、先ほど作成したAPIキー(画像ではmoicen_Dify_Spreadsheet)を選択する
    Spreadsheet ID: Spreadsheet ID(先ほどコピーした)
     
    Data: 以下のコードをペースト、(ユーザー入力{x}input)(テンプレート{x}output)の部分をDifyの変数に置き換えます
    ユーザー入力{x}inputテンプレート{x}outputの入力は、挿入したい箇所に/を入力すると選択メニューが出るので選択します(元の(ユーザー入力{x}input)(テンプレート{x}output)の文字は削除)
     
    Value Input Option: RAW
    Include Values in Response: False
    Response Value Render Option: FORMATTED_VALUE
    Response Date Time Render Option: SERIAL_NUMBER

    [{
    "range":"シート1!A2:C2", 
    "values":[
    ["(ユーザー入力{x}input)",
    "(テンプレート{x}output)"]
    ]
    }]
    
  4. 再びテスト実行をクリック、実行してみましょう
    実行結果が画像の様に、A2セルにDifyに入力した値、B2セルにA1セルの値が出力されれば成功です!
    実行するたびに、A,B列の最終行に値が記載されていきます。


            ⇓

【2】 休薬判定の結果をSpreadSheetに書き込んでみよう

「薬の名前と手術日だけ入力すれば、AIが判断してくれるアプリ」というものを作り(以下を試す場合はご自身で作成してください。同じ構造であれば問題はありません。)、
 その続きを、【1】. DifyでSpreadSheetに読み書きできるようにするの応用で作っていきます。

構造:
①ユーザーが入力した薬剤と手術日を受けてLLMが休薬情報を提示する(「薬の名前と手術日だけ入力すれば、AIが判断してくれるアプリ」の構造)
②スプレッドシートに上から順番に情報を書き込みたいので、最終行(記載されていない行)の情報を取得する。
③ユーザーが入力した薬剤、手術日、LLMの返答を、③で取得したスプレッドシート最終行に記載する。

1.スプレッドシートを作成する

スプレッドシートを新規作成し、
A1セル:drug_name
B1セル:ope_day
C1セル:LLM_return
と記載してください。

2.スプレッドシートの最終行を取得する

最終行にデータを追加していきたいので、まず最終行がどこにあるのかを取得します。

  1. 事前に作成したフローを開きます(「薬の名前と手術日だけ入力すれば、AIが判断してくれるアプリ」)

  2. LLMノードと出力ノードの間にBATCH GETノードを追加し、設定を入力します
    ワークスペースのデフォルトをクリックし、先ほど作成したAPIキー(画像ではmoicen_Dify_Spreadsheet)を選択する
    Spreadsheet ID: Spreadsheet IDをペースト
    Ranges: [シート1!A:A]
    (Rangesは表の行数(最終行の数字)を知りたいのでA:Aの範囲でOKです。)
    Date Time Render Option: SERIAL_NUMBER(デフォルトのまま)
    Major Dimension: ROWS
    Value Render Option: FORMATTED_VALLUE

  3. 一旦、出力を見てみます
    テスト実行をクリックします。
    薬剤名手術日を入力し、実行開始をクリックします。
    BATCH GETノードをクリックし、最後の実行をクリック、出力の欄を見ます。
    以下の様な出力(JSON)になっていると思います。
     

  4. BATCH GETノードと出力ノードの間にコード実行ノードを追加し、設定を入力します
    入力変数: ss_bodyBATCH GET {x}json
    コード:
     コードのタイプを PYTHON3JAVASCRIPTに変更します。
     以下のコードを貼り付けます
    出力変数: resultString

    function main({ ss_body, sheet_name = "シート1" }) {    
        const last_row = ss_body[0].valueRanges[0].values.length;
        const new_line_num = last_row + 1;
        const range = `${sheet_name}!A${new_line_num}:C${new_line_num}`;
        return { result: range };
    }
    

    ここではss_body[0].valueRanges[0].valuesにシートの中身の要素が入ってくるのでlengthを指定することで長さ(=行数)がわかります。

    last_rowが最終行なので、const new_line_num = last_row + 1;とすることで次に追加する行数番号が分かります。

    const range = ${sheet_name}!A${new_line_num}:F${new_line_num};
    最後rangeで文字列を整形しています。

    実際にテスト実行を実行し、コード実行ノードの最後の実行を見てみると、"シート1!A2:C2"のような範囲になっているはずです。

  5. コード実行ノードと出力ノードの間にBATCH UPDATEノードを追加し、設定を入力します
    ワークスペースのデフォルトをクリックし、先ほど作成したAPIキー(画像ではmoicen_Dify_Spreadsheet)を選択する
    Spreadsheet ID: Spreadsheet IDをペースト

    Data: 以下のコードをペースト、(コード実行{x}result)(ユーザー入力{x}drug_name)(LLM{x}text)の部分をDifyの変数に置き換えます
    ※挿入したい箇所に/を入力、選択メニューから選択(元の(ユーザー入力{x}input)(テンプレート{x}output)の文字は削除)

    [{
    "range":"(コード実行{x}result)", 
    "values":[
    ["(ユーザー入力{x}drug_name)",
    "(テンプレート{x}ope_day)",
    "(LLM{x}text)"]
    ]
    }]
    
    

このようなフローが出来上がると思います。

  1. テスト実行を実行してみましょう
    スプレッドシートのシート1
    A1セル:薬剤名:drug_name
    B1セル:手術日:ope_day
    C1セル:LLMの回答:LLM_return
    が入力されていれば成功です!

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?