🐈

[Dify] Google App Script を用いてDifyアプリや業務の自動実行

2025/03/02に公開

Dify のワークフローを定期実行する

Difyは強力なワークフローの自動化ツールですが、その機能をさらに活用するために、Google Apps Script(GAS)と組み合わせることで定期実行を実現できます。これにより、日々の繰り返し作業や定期的なタスクを完全に自動化することが可能になります。

例えば、毎日の業務レポートの生成、定期的なデータ分析、自動応答メッセージの更新など、時間のかかる作業をDifyのワークフローで自動化し、それをGASで定期的に実行することで、業務効率を大幅に向上させることができます。このような自動化により、人的リソースをより創造的で価値の高いタスクに集中させることが可能になります。

Dify で ワークフローを定期実行する流れ

  • 定期実行するワークフローを Dify で作成する
  • 作成したワークフローを定期実行するプログラムを、Google App Scriptで実装・設定する

定期実行するワークフローを Difyで作成する

始めに、定期実行するワークフローを Dify 上で作成します。今回は、サンプルとして、「現在の時刻を取得して、Slack に通知する 」と言う実験用のワークフローを作成し利用します。実際には、皆様それぞれで作成されたワークフローの呼び出しに置き換えてご利用ください ( あるいは、任意の検証用ワークフローを作成いただいても構いません )

ワークフローの全体像はこちらです。

開始ノードの次に連結されているのは、”Current Time”ツールです。現在の時刻を取得して、出力します。

取得した時刻は、Slack の Incoming Webhook to send message ツールを利用して、Slack に通知します。

Slackへの通知の仕方は以下の記事を参考にしてみてください。
https://zenn.dev/sparkleai_blog/articles/8df21241387166

ワークフローを作成後、右上の公開ボタンで、アプリを公開してください。その後、左側メニュの”APIアクセス”をクリックすると、以下のような画面になります。

こちらの画面で、後ほどGoogle App Script で用いるAPI Key を作成・取得します。

画面右上の、API キーをクリックしてください。

すると、APIシークレットキーの作成モーダルが開きます。”+新しいシークレットキーを作成”ボタンを押して、キーを作成しましょう。作成後、キーをコピーしておいてください。後ほど、利用します。

Google App Script を用いて Dify のワークフローを定期的に呼び出す

Google App Script とは ( 通称 GAS )

Google Apps Script(GAS)は、Googleが提供する強力なローコードプラットフォームです。一般的に Google Spreadsheetの拡張機能として知られていますが、その活用範囲ははるかに広範です。Gmailアカウントがあれば誰でも無料で利用できることです。これにより、個人での業務効率化から、企業での大規模な自動化まで、幅広いニーズに対応することができます。

今回は、Google App Script上にDifyのワークフローを実行するコードを書き、それを定期実行します。

Dify の Workflowを呼び出す

App Scriptのダッシュボードを開きます。

https://script.google.com/home/start

右上の、”新しいプロジェクト”をクリックして、プロジェクトを作成します。

表示されたエディタには、myFunction と言う中身が空の関数が書いてあります。この中身を実装していきます。

function myFunction() {
	// ここに Dify のワークフローを呼び出すコードを書く
}

以下が貼り付けるコードです。

apiKey の値は、先ほど Difyで作成したワークフローのAPIキーに置き換えてください。

また、呼び出したいワークフローになんらかのパラメータ ( 開始ノードの入力の値 ) を渡したい場合は、payload の “inputs” の中に記載します。

/**
 * Difyのワークフローを呼び出すサンプル関数
 */
function myFunction() {
  // 1. DifyワークフローAPIのエンドポイント
  var endPoint = "https://api.dify.ai/v1/workflows/run";
  
  // 2. APIキー
  // ここでは例として直接記載していますが、
  // 実際はスクリプトプロパティなど安全な場所に保管し、そこから取得してください。
  var apiKey = "app-DifyApiKey";  // ← 実際のAPIキーを設定

  // 3. リクエストボディ(payload)を作成
  //   - Difyのワークフローで定義されている入力項目に合わせて設定します。
  //   - user の値には実際のエンドユーザーIDやセッションID等を入れると良いでしょう。
  var payload = {
    "inputs": {
      // ワークフローで定義された変数に合わせてキーを設定
      // 例: "text": "Hello, Dify!"
    },
    "response_mode": "blocking",
    "user": "google_app_script"
  };

  // 4. UrlFetchApp のオプションを設定
  var options = {
    "method": "post",
    "contentType": "application/json",
    "muteHttpExceptions": true,  // エラー時にHTTPレスポンス本文も取得できるように
    "headers": {
      "Authorization": "Bearer " + apiKey
    },
    "payload": JSON.stringify(payload)
  };

  try {
    // 5. ワークフロー実行リクエストを送信
    var response = UrlFetchApp.fetch(endPoint, options);
    
    // 6. 返却された結果をログ出力 (必要に応じて加工)
    var result = JSON.parse(response.getContentText());
    Logger.log(result);
    
  } catch (error) {
    // 7. エラー発生時の処理
    Logger.log("エラーが発生しました: " + error);
  }
}

これでワークフローの呼び出しが行えます。メニューバーの保存ボタンを押した後、実行をクリックしてみましょう。

Google App Script の実行が完了し、Slackに通知が送られたことが確認できます。

Google App Script の定期実行を設定する

次に、実装した Dify のワークフローを呼び出す Google App Script が定期実行されるように設定します。左側のアイコンが並んだメニューの中から、タイマーのアイコン(トリガー)をクリックします。

トリガーの設定画面が開くので、右下の “トリガーを追加 “ ボタンをクリック。

実行する関数を選択

myFunction

実行するデプロイを選択

Head

イベントソースを選択

時間主導型

時間ベースのトリガータイプを選択

時間ベースのタイマー

時間の感覚を選択(時間)

1時間おき

を選択し、このGoogle App Scriptが1時間毎に実行されるように設定します。

定期実行を確認

トリガーの設定後は、”実行数”メニューから、呼び出し履歴を確認することができます。また今回実験で用いたSlackの通知からも、毎時呼び出されていることが確認できます。

Slack の通知も送られている。

まとめ

本記事では、Google App ScriptとDifyを組み合わせて定期的なワークフローの自動実行を実現する方法について解説しました。主なポイントは以下の通りです:

  • Google App Scriptを使用してDifyのワークフローを呼び出すことができる
  • APIキーを使用して安全にDifyのワークフローと連携できる
  • トリガー機能により、定期的な自動実行のスケジューリングが可能

このような自動化されたワークフローを導入することで、定期的なタスクの実行を効率化し、人的リソースをより価値の高い業務に集中させることができます。また、実行履歴の確認やSlack通知との連携により、自動化されたタスクの監視も容易に行えます。

今後は、より複雑なワークフローの自動化や、他のツールとの連携など、さらなる活用方法を探ることができます。ぜひ、ご自身の業務に合わせてワークフローをカスタマイズし、より効率的な業務自動化を実現してください。

Sparkle AIブログ

Discussion