始めに
ども!Dify系のブログをチーム総出で書いて、眺めているのが楽しくなっている龍ちゃんです。Difyのブログも本数が出ていて続いていますね。
今回は、前回作成した「Dify入門ガイド:X投稿を自動生成!10分で作るブログPR効率化ワークフロー」のAPI公開をして、GASからアクセスしていきたいと思います。
アプリの公開方法に関しては、「Dify入門ガイド:作成したAIアプリ、どう公開する?Web公開・API活用する3つの方法」で詳しく解説しています
ソースコード
function sampleFunction() {
const headers = {
'Authorization': "Bearer *******************", //api key発行してペースト
'Content-Type': 'application/json' //必須
};
const data = {
"user": "*********", // 任意の文字列で可能(監視で表示される)
"response_mode": "blocking", // streaming or blocking
'inputs': { // 設定した開始ノードの入力
"URL": "https://tech-lab.sios.jp/archives/45986",
"count": 120
}
};
const options = {
"method": "post",
"payload": JSON.stringify(data),
"headers": headers,
"muteHttpExceptions": true // エラーを平文で返してもらう
};
const requestUrl = "https://api.dify.ai/v1/workflows/run";
const response = UrlFetchApp.fetch(requestUrl, options);
const responseText = response.getContentText()
// 帰ってきたレスポンスを表示
Logger.log(responseText); // レスポンス内容をログに出力
// StatusCodeによって処理分岐
if (response.getResponseCode() === 200) {
const responseJson = JSON.parse(responseText);
Logger.log(responseJson.data.outputs.text)
} else {
Logger.log("Error"); // エラー発生時のログ出力
}
}
Difyで公開したAPIにGASからアクセスをする
詳しい手順とソースコードの解説をしていきます。まだ、Dify上でアプリを作成していない方は、こちらの記事を参考にしてアプリを作成してください。
DifyでAPIを公開する
ワークフローの右上から「公開する」を選択して、アプリを公開します。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/31cce6ed7be620fb1c67aef41b2ec85f.png?resize=880%2C458&ssl=1)
公開後は、下のような画像に代わります。ここからAPIにアクセスするためのAPI KEYを発行します。「APIリファレンスにアクセス」をクリックします。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/ec79706309935e748c55a4abe678a56b.png?resize=880%2C458&ssl=1)
右上の「APIキー」をクリックして「APIシークレットキー」を発行します。
![](https://i0.wp.com/tech-lab.sios.jp/wp-content/uploads/2025/02/b50fe2ee59b4590b5dd10a34d86017d5.png?resize=880%2C458&ssl=1)
発行した「API KEY」はDifyにAPIアクセスするのに必要になるので、大事に保管しましょう。もし、流出した場合は再発行して既存のAPIキーを失効させてください。
GASからDify(API)にアクセスする
GASからDify(API)アクセス部分はこちらになります。
const headers = {
'Authorization': "Bearer *******************", //api key発行してペースト
'Content-Type': 'application/json' //必須
};
const data = {
"user": "*********", // 任意の文字列で可能(監視で表示される)
"response_mode": "blocking", // streaming or blocking
'inputs': { // 設定した開始ノードの入力
"URL": "https://tech-lab.sios.jp/archives/45986",
"count": 120
}
};
const options = {
"method": "post",
"payload": JSON.stringify(data),
"headers": headers,
"muteHttpExceptions": true // エラーを平文で返してもらう
};
const requestUrl = "<https://api.dify.ai/v1/workflows/run>";
const response = UrlFetchApp.fetch(requestUrl, options);
const responseText = response.getContentText()
変更する点としては、「headers」と「data」になります。muteHttpExceptions
はGASの設定パラメーターで、UrlFetchApp.fetchが失敗した場合はエラーがresponseに格納されます。
先ほど取得した「API Key」を渡します。
以下のようなパラメーターが必要になります。
パラメータ | タイプ | 説明 |
---|---|---|
user | String | 必須 APIアクセスしたユーザーを識別する文字列(監視タブで確認できる) |
response_mode | streaming | 必須 応答のモード streaming:タイプライターのように出力が可能 blocking:実行完了後に結果を返答する |
inputs | object | 必須 開始ノードで設定したObject入力 |
files | array[object] | オプション ファイル入力を可能にしている場合のファイル入力 |
今回は開始ノードに変数として、「URL」と「count」を設定しています。開始ノードに変数を設定していない場合は、空オブジェクトを設定してください。
GASでレスポンスを解析する
muteHttpExceptions
をTrue
に設定してるので、エラー時も処理は継続します。振り分けのためにステータスコードでの分岐を行っています。
// StatusCodeによって処理分岐
if (response.getResponseCode() === 200) {
const responseJson = JSON.parse(responseText);
Logger.log(responseJson.data.outputs)
} else {
Logger.log("Error"); // エラー発生時のログ出力
}
Dify(API)のエラーコードとしては、以下のようなものがあります。
ステータスコード | メッセージ | 説明 |
---|---|---|
400 | invalid_param | 異常なパラメータ入力 |
400 | app_unavailable | アプリの設定が利用できません |
400 | provider_not_initialize | 利用可能なモデル資格情報の設定がありません |
400 | provider_quota_exceeded | モデル呼び出しのクォータが不足しています |
400 | model_currently_not_support | 現在のモデルは利用できません |
400 | workflow_request_error | ワークフローの実行に失敗しました |
500 | – | 内部サーバーエラー |
レスポンスとしては、200/400/500
しかありません。ですが、エラーメッセージに情報がのっているので、エラーが出た場合はメッセージを読んで適宜修正を行ってください。
終わり
DifyのAPIを使って、GASからアクセスする方法について解説しました。APIアクセスの設定は非常にシンプルで、API KEYを取得して、必要なパラメーターを設定するだけです。これからは、このGASとDify(API)を活用して様々な自動化を実現していきたいと思います。
XのAPIと連携して、ブログのPRを全自動化していくことが目標です。
ではまた~