DifyとGoogleスプレッドシートを連携させて、セルデータを取得してみた
おはようございます。ベンジャミンの木村です。
今回、AWSのBedrockでGoogleスプレッドシートのデータを使用する必要があったので、DifyとGoogleスプレッドシートの連携を行いました。
その連携の設定方法について、説明していきたいと思います。
設定すれば、下記図のようにDify上でセル範囲を指定するだけで、その範囲の値を簡単に取得できるようになりますので、ぜひご覧いただければと思います

1. 事前準備
1-1. Difyアカウントの準備
こちらは下記記事が大変わかりやすいので、ご参考にしていただければ幸いです。
ノーコードツール「Dify」の登録方法を分かりやすく解説します!
https://note.com/nocode_dev/n/ne03de4beb66b
1-2. スプレッドシートの権限について
こちらはDifyからAPI連携を行うため、サービスアカウントのメールアドレスを登録する必要があります。連携するスプレッドシートは作業者に管理者権限が必要になりますので、ご確認ください。
変更が必要な場合は、下記記事が大変わかりやすいので、ご参考にしていただければ幸いです。
https://www.tk-1.co.jp/tech_blog/google/google-spreadsheet.html
1-3. Difyのワークフローについて
今回、Difyのワークフロー上でスプレッドシートの連携ブロックを作成します。Difyのワークフロー作成については、下記記事が大変わかりやすいので、ご参考にしていただければ幸いです。
https://tech-lab.sios.jp/archives/45587
2. DifyとGoogleスプレッドシートを連携させる
2-1. Difyにログインし、右上の「プラグイン」をクリックする

2-2. 「マーケットプレイスを探索する」をクリック → 「google_sheets」と検索 → google_sheetsの「インストール」をクリックする

2-3. 表示された画面で「インストール」をクリックする

2-4. 「プラグイン」 → 「google_sheets」 → 「取得方法」をクリックする

2-5. 利用規約をクリックし、「同意して続行」をクリックする
※最新情報に関する通知メールは希望があればでOKです。

2-6. 左ペインの「ライブラリ」をクリックする

2-7. 「Google Sheets API」をクリックする

2-8. 「有効にする」をクリックする

2-9. 「認証情報」→「認証情報を作成」をクリックする

2-10. 「サービスアカウント名」に任意の名前を入力し、「作成して続行」をクリックする
※「認証情報の作成」からこの画面に遷移しますが、「IAMと管理」→左ペインの「サービスアカウント」→「サービスアカウントの作成」からでもこの画面に遷移できます。

2-11. ロールに「オーナー(もしくはビューでもOK)」を選択し、「続行」をクリックする

2-12. Principals with accessは何も入力せずに、「完了」をクリックする

2-13. サービス アカウントの欄にメールアドレスが発行されるので、こちらも控える

2-14. サービス アカウントの欄の右側のペンのアイコンをクリックする

2-15. 「鍵」タブ → 「キーを追加」 → 「新しい鍵を作成」をクリックする

2-16. キータイプで「JSON」を選択し、「作成」をクリックする
作成ボタンをクリックすると、ローカルに認証情報のJSONが払い出されます。

2-17. Difyの画面に戻り、先ほどの項番2-16で取得したJSONファイルの中身をすべて認証情報JSONのフォームに貼り付け、「保存」ボタンをクリックする

2-18. データを取得したいGoogleスプレッドシートに移動し、「共有」をクリック → 項番2-13で控えたメールアドレスを「閲覧者」で共有する

2-19. Difyのワークフローの画面に移動し、ブロックの追加ボタン(+ボタン)をクリック → 「ツール」→ 「Googleスプレッドシート」 → 「Batch Get」をクリックする

2-20. フォームに下記の通り値を入力する。
- Spreadsheet ID
- 連携させるスプレッドシートのIDを入力します。
- ※スプレッドシートのIDはスプレッドシートのURLに記載があります。以下例の赤文字部分を記載ください。
- 例)https://docs.google.com/spreadsheets/d/<SpreadSheet ID>
- Ranges
- スプレッドシートから取得したデータの範囲を記載します。
- 例) [“B3:C”]
- スプレッドシートから取得したデータの範囲を記載します。
- DATATIME RENDER OPTION
- 日付や時間のデータをどのように取得するかを指定します。
- SERIAL_NUMBER:日付や時間をシリアル値(数値)で取得します。※デフォルト
- 例) 44561.5(2022年1月1日12:00)
- FORMATTED_STRING:スプレッドシートの表示形式に従って文字列で取得します。
- 例) 2022/01/01 12:00
- SERIAL_NUMBER:日付や時間をシリアル値(数値)で取得します。※デフォルト
- 日付や時間のデータをどのように取得するかを指定します。
- MAJOR DIMENSION
- 取得するデータの構造(行単位または列単位)を指定します。
- ROWS:データを行単位で取得します。※デフォルト
- 例) [[1, 2], [3, 4]]
- COLUMNS:データを列単位で取得します。
- 例) [[1, 3], [2, 4]]
- ROWS:データを行単位で取得します。※デフォルト
- 取得するデータの構造(行単位または列単位)を指定します。
- VALUE RENDER OPTION
- セルの値をどのように取得するかを指定します。
- FORMATTED_VALUE:セルの表示形式に従って値を取得します。※デフォルト
- 例:$1,000
- FORMULA:
- セルに入力されている数式を取得します。
- 例:=SUM(A1:A10)
- セルに入力されている数式を取得します。
- FORMATTED_VALUE:セルの表示形式に従って値を取得します。※デフォルト
- セルの値をどのように取得するかを指定します。

※複数シートがある場合、指定されるセルは最初のシートだけになってしまいます。他のシートを参照する場合は、下記の記事の「補足2:同じファイル内で別シートの単独セルを参照する場合」が範囲指定の仕方をわかりやすく説明してくれていたので、こちらを参考にRangeを書き換えてください。
スプレッドシートで別シートを参照・集計する方法! IMPORTRANGE関数で簡単にファイル間のデータを参照
https://allabout.co.jp/gm/gc/488144/
3. DifyとGoogleスプレッドシートの連携テスト
3-1. Googleスプレッドシートのブロック(Batch Get)の「▷」ボタンをクリックする

3-2. 「実行開始」ボタンをクリックする

3-3. ステータスがSUCCESSで、目的のJSONが取得できれば連携完了

まとめ
いかがでしょうか?
今回はDifyとGoogleスプレッドシートの連携方法を記載しました。
Difyのプラグインを使えば、他にもGoogleドライブや、GitHubやNotionなんかとの連携も可能ですので、それらツールを組み合わせて、AIにデータを食わせて活用すれば、AIの活用の幅が増えるのではないでしょうか?
ご参考にしていただけますと幸いです!