【Dify】Googleスプレッドシートの連携方法|プラグイン設定とGASの使い分け

DifyとGoogleスプレッドシートを連携する方法は、主に「google_sheetsプラグイン」と「GAS(Google Apps Script)」の2つです。
表のデータを定型的に取得・更新したい場合はgoogle_sheetsプラグイン、複雑な条件分岐やGmail・Googleドライブなども含めて自動化したい場合はGASが向いています。初心者は、まずプラグインから試すのがおすすめです。
本記事では、DifyとGoogleスプレッドシートを連携するために必要な設定項目、権限の選び方、接続確認、エラー対処を整理します。変更されやすい画面操作については、Dify MarketplaceとGoogle Cloudの公式ページを案内します。
さらに、プラグインとGASの違い、データを読み取り・更新するときの考え方、接続できない場合の確認ポイントも整理します。
この記事でわかること
- google_sheetsプラグインとGASの選び分け
- サービスアカウントとGoogle Sheets APIの設定方法
- Difyに認証情報を登録する手順
- スプレッドシートのデータを取得・更新する方法
- 接続エラーが起きたときの確認ポイント
※2026年7月31日時点で、Dify Marketplaceに掲載されている「omluc/google_sheets」のバージョンは0.0.2です。画面や対応操作は更新される可能性があります。また、サービスアカウントのJSON秘密鍵は、記事・画像・共有フォルダなどで公開しないでください。
Difyプラグインの共通的な導入手順を先に確認したい方は、Lesson6-1:ツールとプラグインの役割と違い・使い分け をご覧ください。

DifyとGoogleスプレッドシートを連携する2つの方法
DifyとGoogleスプレッドシートを連携する方法は、主に「google_sheetsプラグイン」と「GAS(Google Apps Script)」の2つです。
決まった範囲のデータを取得・更新する場合はgoogle_sheetsプラグイン、条件分岐や複数サービスを組み合わせた処理まで作りたい場合はGASが向いています。
| 比較項目 | google_sheetsプラグイン | GAS |
|---|---|---|
| 主な用途 | シート内のデータ取得・更新 | 独自の業務処理や自動化 |
| Difyからの接続方法 | Difyのツールとして実行 | WebアプリなどをHTTP経由で呼び出す |
| コード作成 | 原則不要 | JavaScriptによる実装が必要 |
| 初期設定 | サービスアカウント、Sheets API、共有設定 | スクリプト作成、権限設定、デプロイ |
| 得意な処理 | 決まった範囲の取得・更新 | 条件分岐、入力チェック、複数シートの処理 |
| Googleサービス連携 | Google Sheetsが中心 | Gmail、Googleドライブ、カレンダーなどにも拡張可能 |
| 保守 | プラグインの仕様や更新に依存 | 自分でコードと権限を管理する |
google_sheetsプラグインが向いているケース
google_sheetsプラグインは、GoogleスプレッドシートをDifyアプリのデータ保存先や参照先として使いたい場合に向いています。
たとえば、次のような処理です。
- 指定したセル範囲のデータを取得する
- 取得した表の内容をLLMノードに渡す
- Difyで生成した結果を指定範囲へ書き込む
- 複数の範囲をまとめて取得・更新する
2026年7月31日時点で、Dify Marketplaceに掲載されている「omluc/google_sheets」が提供している主な操作は、Batch GetとBatch Updateです。
コードを書く必要はありませんが、サービスアカウントの作成、Google Sheets APIの有効化、対象シートの共有設定は必要です。
Difyプラグインの共通的な導入方法については、Lesson6-1:ツールとプラグインの役割と違い・使い分け で確認できます。
GASが向いているケース
GASは、スプレッドシートの取得・更新だけでは完結しない処理に向いています。
たとえば、次のような場合です。
- 入力内容によって処理するシートを切り替える
- 複雑な入力チェックやデータ整形を行う
- 複数のスプレッドシートを横断して処理する
- GmailやGoogleドライブなどと連携する
- 実行ログ、エラー処理、再試行処理を独自に実装する
GASをWebアプリとして公開し、DifyからHTTPリクエストを送ることで、独自の処理を呼び出せます。ただし、コードの作成、公開範囲、実行権限、保守を自分で管理する必要があります。
迷った場合の選び方
初めてGoogleスプレッドシートと連携する場合は、まずgoogle_sheetsプラグインを選んでください。
決まった範囲の取得・更新だけであれば、プラグインで対応できます。プラグインでは実現できない条件分岐や、Google Sheets以外のサービスとの連携が必要になった段階でGASを検討します。
google_sheetsプラグインの設定に必要なもの
DifyとGoogleスプレッドシートを連携するには、Dify側だけでなく、Google Cloudと対象スプレッドシートの設定も必要です。
画面の構成やボタン名は変更される可能性があるため、本記事では設定に必要な項目と確認ポイントを整理します。
最新の画面操作は、Dify MarketplaceとGoogle Cloudの公式ページで確認してください。
設定前に準備するもの
設定を始める前に、次のものを用意します。
- Googleアカウント
- Google Cloudプロジェクト
- 連携に使用するGoogleスプレッドシート
- google_sheetsプラグインをインストールできるDifyワークスペース
- サービスアカウントのJSONキーを安全に保管する場所
本番データを使用する前に、接続確認用のテストスプレッドシートを別に作成しておくと安全です。
設定の全体的な流れ
設定は次の順番で進めます。
- Google Cloudプロジェクトを作成または選択する
- Google Sheets APIを有効化する
- サービスアカウントを作成する
- サービスアカウントのJSONキーを作成する
- 対象スプレッドシートをclient_emailと共有する
- Dify Marketplaceからgoogle_sheetsプラグインをインストールする
- Difyの認証設定にJSONファイルの内容を登録する
- Batch Getで接続を確認する
- 更新が必要な場合はBatch Updateもテストする
最新の画面操作は、以下のページで確認できます。
Google Sheets APIは、Google Cloud Consoleの「APIとサービス」から有効化します。
スプレッドシートの共有権限を選ぶ
サービスアカウントを作成すると、JSONファイル内のclient_emailに専用のメールアドレスが記載されます。
このメールアドレスを、連携対象のGoogleスプレッドシートの共有先へ追加します。
付与する権限は、Difyから行う処理に合わせて選びます。
- Batch Getでデータを取得するだけの場合:閲覧者
- Batch Updateでデータを更新する場合:編集者
更新が不要な場合は、編集者権限を付与しないでください。また、Googleドライブ全体ではなく、Difyから利用するスプレッドシートだけを共有します。
共有ドライブ内のスプレッドシートを使用する場合は、サービスアカウントを共有ドライブのメンバーとして追加する必要があります。
JSONキーを安全に管理する
サービスアカウントのJSONファイルには、Google APIへ接続するための秘密鍵が含まれています。
次の場所には保存・掲載しないでください。
- WordPressのメディアライブラリ
- 記事内の画像やコード
- GitHubなどの公開リポジトリ
- 誰でも閲覧できる共有フォルダ
- メールやチャットの本文
JSONファイルの内容は、Difyプラグインの認証情報欄にだけ登録します。
秘密鍵が流出した可能性がある場合は、Google Cloudで該当キーを削除し、新しいキーを作成してください。
Difyにプラグインと認証情報JSONを登録する
Google側の準備が完了したら、Difyのワークスペースにgoogle_sheetsプラグインを追加します。
- Difyのプラグイン画面を開く
- Marketplaceで「google_sheets」を検索する
- 提供者が「omluc」であることを確認する
- google_sheetsプラグインをインストールする
- インストールしたプラグインの認証設定を開く
- 認証情報JSONの入力欄に、サービスアカウントのJSONファイルの内容をすべて貼り付ける
- 認証情報を保存する
JSONファイルからclient_emailやprivate_keyだけを抜き出すのではなく、最初の{から最後の}までを登録してください。
認証情報JSONは、LLMノードのプロンプト、ツールの通常入力欄、記事本文などには貼り付けません。必ずプラグインの認証情報欄へ登録します。
Difyの画面構成やボタン名は変更される可能性があります。現在のプラグイン情報と最新の設定方法は、Dify Marketplaceの掲載ページで確認してください。
Dify Marketplace|google_sheets
設定完了を判断する方法
認証情報を保存できただけでは、連携が成功したとは判断できません。
次の項目を確認してください。
- google_sheetsプラグインがインストールされている
- サービスアカウントのJSON全体が認証情報として登録されている
- 対象スプレッドシートがclient_emailと共有されている
- Google Sheets APIが有効になっている
- Batch Getでテスト用セルの内容を取得できる
- 更新が必要な場合は、Batch Updateでテスト用セルを更新できる
テスト用スプレッドシートで取得または更新を確認できれば、基本的な接続設定は完了です。
Batch GetとBatch Updateでデータを取得・更新する
google_sheetsプラグインには、Googleスプレッドシートの値を取得する「Batch Get」と、値を更新する「Batch Update」が用意されています。
どちらを使う場合も、次の情報が必要です。
- 操作するスプレッドシートのID
- 操作するシート名
- 取得または更新するセル範囲
スプレッドシートIDとセル範囲を確認する
スプレッドシートIDは、GoogleスプレッドシートのURLに含まれています。
URLが次の形式の場合、
https://docs.google.com/spreadsheets/d/スプレッドシートID/edit
「/d/」と「/edit」の間がスプレッドシートIDです。
セル範囲は、シート名とセル番地を組み合わせたA1形式で指定します。
Sheet1!A1:C3
この例では、Sheet1のA1セルからC3セルまでを指定しています。
シート名に空白が含まれる場合は、シート名をシングルクォートで囲みます。
'問い合わせ 管理'!A1:C3
スプレッドシートIDと、画面下部に表示されるシートID(gid)は別の値です。google_sheetsプラグインには、URLの「/d/」と「/edit」の間にあるスプレッドシートIDを指定します。
Batch Getでデータを取得する
Batch Getは、一つまたは複数のセル範囲からデータを取得する操作です。
入力例は次のとおりです。
{
"spreadsheet_id": "ここにスプレッドシートIDを入力",
"ranges": [
"Sheet1!A1:C10"
]
}spreadsheet_idには対象スプレッドシートのIDを指定します。
rangesには、取得するセル範囲を配列として指定します。一つの範囲だけを取得する場合も、配列の形で入力します。
取得に成功すると、指定した範囲とセルの値がvalueRangesとして返されます。
Batch Getでデータを取得するだけの場合は、対象スプレッドシートをサービスアカウントに「閲覧者」として共有すれば利用できます。
取得結果は、後続のLLMノードで要約、分類、回答生成などに利用できます。
Batch Updateでデータを更新する
Batch Updateは、一つまたは複数のセル範囲へ値を書き込む操作です。
入力例は次のとおりです。
{
"spreadsheet_id": "ここにスプレッドシートIDを入力",
"data": [
{
"range": "Sheet1!A1:B2",
"values": [
["A", "B"],
["C", "D"]
]
}
]
}dataには、更新する範囲と値を指定します。
rangeには更新対象のセル範囲を指定し、valuesには書き込む値を行と列の配列として指定します。
たとえば、A1からB2までの2行2列を更新する場合は、valuesも2行2列にします。
Batch Updateを利用する場合は、対象スプレッドシートをサービスアカウントに「編集者」として共有する必要があります。
指定した範囲の既存データが置き換わる可能性があるため、最初はテスト用スプレッドシートで実行してください。
Difyワークフローでの使い分け
Difyのワークフローでは、次のように使い分けられます。
データを参照する場合:
- Batch Getでスプレッドシートの値を取得する
- 取得結果をLLMノードへ渡す
- LLMノードで要約、分類、回答生成を行う
生成結果を記録する場合:
- 入力フォームやLLMノードでデータを作成する
- Batch Updateで書き込み先のセル範囲を指定する
- 処理結果をスプレッドシートへ書き込む
この記事では、google_sheetsプラグイン固有の入力項目と使い分けだけを扱います。
Difyのツールノードに関する共通操作は、Lesson6-1:ツールとプラグインの役割と違い・使い分け を参照してください。

現在のプラグインでできないこと
2026年7月31日時点のgoogle_sheetsプラグインで提供されている主な操作は、Batch GetとBatch Updateです。
そのため、次の処理には専用の操作が用意されていません。
- 最終行を自動的に探して追記する
- 新しいシートを作成する
- 行や列を挿入・削除する
- セルの色や文字サイズを変更する
- 複雑な条件に従って書き込み先を変更する
これらが必要な場合は、GAS、別のプラグイン、独自APIなどを検討してください。
特に「追記」については、Batch Updateで固定範囲を更新する処理とは異なります。既存データの次の行へ自動的に追加したい場合は、別の方法が必要です。
google_sheetsプラグインで接続できないときの対処法
google_sheetsプラグインでエラーが発生した場合は、設定を最初からやり直すのではなく、次の順番で確認してください。
- Google Sheets APIが有効になっているか
- 認証情報JSONをすべて登録しているか
- 対象スプレッドシートをclient_emailと共有しているか
- spreadsheet_idが正しいか
- シート名とセル範囲が正しいか
- 更新に必要な編集権限があるか
- 入力するデータの行数と列数が合っているか
Permission deniedや403エラーが表示される
権限に関するエラーが表示される場合は、サービスアカウントが対象スプレッドシートへアクセスできていない可能性があります。
次の項目を確認してください。
- JSONファイル内のclient_emailを共有先に追加している
- Batch Getでは閲覧者以上の権限がある
- Batch Updateでは編集者権限がある
- 保護されたセル範囲を更新しようとしていない
- 共有ドライブを使用する場合は、サービスアカウントがメンバーになっている
- サービスアカウントを作成したGoogle CloudプロジェクトでGoogle Sheets APIが有効になっている
個人のGoogleアカウントではなく、サービスアカウントのclient_emailを共有先へ追加する点に注意してください。
Sheet not foundや404エラーが表示される
対象のスプレッドシートやシートが見つからない場合は、ID、シート名、共有設定のいずれかが間違っている可能性があります。
次の項目を確認してください。
- スプレッドシートのURL全体ではなく、
/d/と/editの間にあるIDを指定している - URL末尾のgidをspreadsheet_idとして使用していない
- 対象スプレッドシートが削除されていない
- サービスアカウントに対象スプレッドシートを共有している
- シート名を正確に入力している
- シート名の前後に不要な空白が入っていない
- 空白を含むシート名をシングルクォートで囲んでいる
たとえば、シート名が「問い合わせ 管理」の場合は、次のように指定します。
'問い合わせ 管理'!A1:C10
400エラーや入力形式のエラーが表示される
400エラーは、spreadsheet_id、ranges、dataなどの入力形式が正しくない場合に発生します。
Batch Getでは、rangesを配列として指定します。
{
"spreadsheet_id": "ここにスプレッドシートIDを入力",
"ranges": [
"Sheet1!A1:C10"
]
}Batch Updateでは、更新範囲とvaluesの行数・列数を合わせます。
{
"spreadsheet_id": "ここにスプレッドシートIDを入力",
"data": [
{
"range": "Sheet1!A1:B2",
"values": [
["A", "B"],
["C", "D"]
]
}
]
}A1からB2までは2行2列なので、valuesも2行2列にします。
また、JSONの括弧、カンマ、ダブルクォートが不足していないか確認してください。JSONの基本文法については、DifyのJSON入門記事を参照してください。
認証情報に関するエラーが表示される
認証情報のエラーが表示される場合は、Difyに登録したJSONを確認してください。
- JSONファイルの内容を最初から最後まで登録している
- client_emailやprivate_keyだけを抜き出していない
- private_key内の改行を削除していない
- Google Cloudで該当するキーを削除していない
- 別のサービスアカウントのJSONを登録していない
- JSONの前後に説明文やコードブロックの記号を入れていない
JSONキーを作り直す場合は、使用しなくなった古いキーをGoogle Cloudで削除してください。
Batch Getで値が返らない
エラーは出ないものの値が返らない場合は、指定したセル範囲にデータがない可能性があります。
次の項目を確認してください。
- 指定した範囲に実際の値が入力されている
- シート名が正しい
- 行番号と列番号が正しい
- 結合セルや非表示行だけを参照していない
- 最初から大きな範囲を指定せず、A1などの小さな範囲で試している
まずは、文字列を直接入力した小さなテスト範囲を取得してください。テスト範囲を取得できたら、実際に使用する範囲へ広げます。
429や503エラーが表示される
429エラーは、短時間にGoogle Sheets APIを呼び出しすぎた場合に発生します。
503エラーは、Google側の一時的な問題や、処理するスプレッドシート・リクエストが複雑すぎる場合に発生することがあります。
次の方法で負荷を減らしてください。
- 一つずつ呼び出さず、Batch Get・Batch Updateでまとめる
- 必要なセル範囲だけを指定する
- 大きなスプレッドシートを一度に取得しない
- 短時間に同じ処理を繰り返さない
- 少し時間を空けてから再実行する
- 再試行する場合は、待ち時間を徐々に長くする
- 複雑な数式やIMPORTRANGEが多いシートでは、処理範囲を小さくする
APIの利用上限は変更される可能性があるため、最新情報はGoogle Sheets APIの公式ページで確認してください。
解決しない場合の確認先
ここまで確認しても解決しない場合は、次の情報を整理します。
- 使用しているプラグイン名と提供者
- プラグインのバージョン
- Batch GetとBatch Updateのどちらで発生したか
- エラーメッセージ
- 指定した範囲
- 閲覧者または編集者の共有権限
- Google Sheets APIの有効化状況
秘密鍵や認証情報JSONは、問い合わせ時にも掲載しないでください。
プラグイン固有の問題は、Dify Marketplaceに掲載されているサポート先を確認します。Google Sheets API側の問題は、Google公式の障害情報とエラー対処資料を確認してください。
まとめ
DifyとGoogleスプレッドシートを連携する方法には、google_sheetsプラグインとGASがあります。
決まった範囲のデータを取得・更新する場合はgoogle_sheetsプラグイン、複雑な条件分岐や他のGoogleサービスまで含めて自動化する場合はGASが向いています。
google_sheetsプラグインを利用するときは、次の点を確認してください。
- Google Sheets APIを有効化する
- サービスアカウントとJSONキーを用意する
- 対象スプレッドシートをclient_emailと共有する
- Batch Getだけなら閲覧者、Batch Updateを使うなら編集者にする
- JSONキーを記事・画像・公開フォルダへ掲載しない
- 本番データを操作する前にテスト用シートで確認する
2026年7月31日時点のgoogle_sheetsプラグインで利用できる主な操作は、Batch GetとBatch Updateです。
専用の追記操作、シートの作成、行や列の追加、セルの書式変更などが必要な場合は、GASや別のプラグインを検討してください。
画面構成やボタン名は変更される可能性があります。最新の設定手順は、Dify MarketplaceとGoogle Cloudの公式ページを確認してください。
次は実際にスプレッドシート連携アプリを作ってみましょう
プラグインの設定だけでは、Difyアプリから自動的にGoogleスプレッドシートが呼び出されるわけではありません。
ワークフローの中にツールを配置し、前のノードから値を渡して初めて、データの取得や更新が実行されます。
実際のアプリを作りながらスプレッドシート連携を試したい方は、次のLessonへ進んでください。
Lesson6-2:ボイスメモ自動要約アプリを作ろう|音声文字起こし&スプレッドシート連携

ツールとプラグインの基本的な違いや、ワークフローでツールを呼び出す共通手順を確認したい方は、先にLesson6-1をご覧ください。
Lesson6-1:ツールとプラグインの役割と違い・使い分け
