見出し画像

Google Apps ScriptでDify APIを使ってテキストを処理する方法


こんにちは!今回は、Google Apps Scriptを使用してDifyのAPIを利用し、テキストを処理する方法をご紹介します。個人的な備忘録として、実装手順や最終的なコードをまとめました。
※GPT-o1で出してもらってます。マジで個人的備忘です。

目的

Googleスプレッドシートのセルに入力されたテキストを、DifyのAPIを使って処理し、その結果を取得します。

前提条件

  • Googleアカウント:GoogleスプレッドシートとApps Scriptを使用するため。

  • Difyアカウント:APIキーを取得するため。

  • Dify APIキー:スクリプトで認証するために必要。

手順

1. スクリプトエディタを開く

  1. Googleスプレッドシートを開きます。

  2. メニューから「拡張機能」>「Apps Script」をクリックします。

2. スクリプトプロパティにAPIキーを設定

  1. スクリプトエディタで「ファイル」>「プロジェクトのプロパティ」を選択。

  2. 「スクリプトのプロパティ」タブを開きます。

  3. 「+ プロパティを追加」をクリックし、以下の情報を入力します。

    • プロパティ名:`DIFY_API_KEY`

    • :あなたのDify APIキー

  4. 「保存」をクリックします。

3. コードを入力

以下のコードをスクリプトエディタに貼り付けます。エンドポイントURLやユーザー識別子など、個人情報が特定できる部分はマスクしています。ご自身で実装される際は、適切な情報に置き換えてください。

function processText(text) {
  const scriptProperties = PropertiesService.getScriptProperties();
  const apiKey = scriptProperties.getProperty("DIFY_API_KEY"); // スクリプトプロパティから取得

  const url = "https://your-personal-domain.com/v1/workflows/run"; // ←あなたのエンドポイントURLに置き換えてください

  const headers = {
    "Authorization": "Bearer " + apiKey,
    "Content-Type": "application/json"
  };

  const payload = {
    "inputs": { "text": text }, // "text"キーを使用
    "response_mode": "blocking",
    "user": "your_user_id" // あなたのユーザー識別子に置き換えてください
  };

  const options = {
    "method": "post",
    "headers": headers,
    "payload": JSON.stringify(payload),
    "muteHttpExceptions": true // HTTPエラー発生時にも例外をスローしない
  };

  const response = UrlFetchApp.fetch(url, options);

  // レスポンスの処理
  const responseText = response.getContentText();
  if (response.getResponseCode() === 200) {
    Logger.log(responseText); // レスポンス内容をログに出力
    const responseJson = JSON.parse(responseText);
    if (responseJson.data && responseJson.data.outputs && responseJson.data.outputs.text) {
      return responseJson.data.outputs.text; // 処理結果のテキストを返す
    } else {
      return "No text output found in the response.";
    }
  } else {
    Logger.log("Error: " + response.getResponseCode() + " - " + responseText); // エラー詳細をログに出力
    return "Error: " + response.getResponseCode() + " - " + responseText;
  }
}

ポイント:

  • `processText`関数は、指定したテキストをDifyのAPIで処理し、その結果を返します。

  • エンドポイントURL (`url`) は、あなたの環境に合わせて置き換えてください。

  • ユーザー識別子 (`user`) は、アプリケーション内で一意となる文字列を使用してください。

エラーとその解決方法

エラー1: Error: 401

原因:

  • 認証情報が正しく設定されていない。

  • APIキーが無効。

対処法:

  • スクリプトプロパティに正しいAPIキーが設定されているか確認。

  • APIキーに不要なスペースや誤字がないか確認。

エラー2: Error: 404

原因:

  • APIエンドポイントのURLが間違っている。

対処法:

  • APIドキュメントを確認し、正しいエンドポイントURLを使用。

    • 自身でクラウドで環境立ててる人はエンドポイント違うよ

  • コード内のURLを適切なエンドポイントに修正。

エラー3: Error: 400 - "text is required in input form"

原因:

  • `inputs`オブジェクト内のキー名が間違っている。

    • Difyワークフロー内の「開始」で指定した変数名を設定する

対処法:

  • `inputs`のキーを`"text"`に変更。

"inputs": { "text": text },

まとめ

今回、Google Apps Scriptを使用してDifyのAPIを活用し、テキストを処理する方法を学びました。エラーが発生した際には、エラーメッセージをよく読み、APIドキュメントを参照することで解決策を見つけることができます。

備忘録ポイント:

  • APIキーの管理:スクリプトプロパティを使用して安全に管理。

  • エラーメッセージの活用:エラーメッセージから問題点を特定。

  • APIドキュメントの重要性:最新のドキュメントを参照し、正しいエンドポイントやパラメータを確認。

  • 個人情報の保護:コードを公開する際には、個人情報が含まれていないか十分に確認。

これで、スプレッドシート上で簡単にテキスト処理ができるようになりました。今後、さらに応用して自分だけの自動化ツールを作成してみてください。


参考リンク:


注意:あとで自分で見返す用です

いいなと思ったら応援しよう!