見出し画像

[GAS・Dify] 多言語一斉翻訳ツールをさくっと作ろう

OuterBrainの林です。

早速ですが、今日作るものはこちらです!

これが…
こうです!

テキストリストを一斉に翻訳するのって結構面倒くさいですよね。
今回はDifyとGAS・スプレッドシートを使って、無料で一斉翻訳するツールを作ります!プログラミング要素もありますが、サンプルコードもあるのでぜひみなさん作ってみてください。

この記事でわかること

  • スプレッドシートのテキストリストに、一斉にLLMの処理を適応する方法

  • Difyで作成したワークフローをGASで呼び出す方法

  • GASで作った処理を、スプレッドシートで呼び出す方法

所要時間:30分



ステップバイステップの具体手順

Difyでワークフローを作成する

Difyのスタジオで、まず翻訳機能のワークフローを作ります。
目指す状態はこちらです。入力したテキストを翻訳するだけなので、非常にシンプルです。

とても簡単ですが一応DSLも配布しますね。

手順1. 開始ブロックの入力フィールドで、翻訳するテキストの入力ができるように設定します。画像では、original_textという変数名で作成しています。

手順2. LLMブロックを追加し、SYSTEMに翻訳の命令のプロンプトを入力します。

# オリジナルテキスト
{変数を設定}

# 命令
オリジナルテキストを、英語に翻訳してください。
翻訳したテキストのみを出力してください。

変数は、入力欄で「{」と入力すると選択できます。

なお、AIモデルで画像ではGeminiを指定しています。Difyで高性能AI Geminiを無料で使い始めるには、こちらの記事をご覧ください。

手順3. 終了ブロックを追加し、出力変数の設定をする

+ボタンから追加できます

出力変数名はなんでもいいですが、英語翻訳なので一旦enとしておきました。

手順4. ツールを公開し、APIキーを取得する

「公開する」ボタンから公開後、「APIリファレンスにアクセス」をクリック
右上の「APIキー」ボタンを押し、「+新しいシークレットキーを作成」をクリックし、そのキーをコピーする

スプレッドシートとGASを用意する

スプレッドシートを作成
拡張機能 Apps ScriptからGASを作成

GASでプログラムを作成

GASでDifyのワークフローを呼び出す機能を作ります。

最初に、シークレット情報はセキュリティ観点からGASのコードに直接書くべきではないため、スクリプトプロパティという機能で設定します。

左バーの設定の一番下で、スクリプトプロパティを設定できます。

ここで、プロパティ名は「DIFY_API_KEY」とし、値に先ほどDifyで作成したAPIキーを入力します。

次に、エディタで以下のコードを入力して保存します。

function test() {
  const output = postToDifyAPI("テストです");
  Logger.log(output);
}

function translate(text) {
  return postToDifyAPI(text);
}

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

  const url = "https://api.dify.ai/v1/workflows/run";
  const headers = {
    "Authorization": "Bearer " + apiKey,
    "Content-Type": "application/json"
  };

  const payload = {
    "inputs": {"original_text": text},
    "response_mode": "blocking",
    "user": "hyasssy",
  };

  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);
    return responseJson.data.outputs.en;
  } else {
    Logger.log("Error: " + response.getResponseCode()); // エラー発生時のログ出力
    return "Error: " + response.getResponseCode();
  }
}

スプレッドシートから、GASで作成した機能を呼び出す

スプレッドシートからは画像のような形で簡単にGASの機能の呼び出しができます。

ひとまずA列には、自分のXの投稿を入力してみました。
B列に、「=translate(翻訳するセル) 」というように入力します。
少し待つと翻訳テキストが表示されます。
B2セルの右下にカーソルを当て、下にドラッグすると同様の処理を下の行にも適応できます。

これで完了です!A列を更新したら、好きなリストに対して翻訳を作成できます。

ちょっと拡張して多言語に一斉翻訳してみる

さらに同様のワークフローを複数作って適応することで、一つのテキストを複数の言語に翻訳するようなことも簡単に行うことができます。

要素としてはこの記事で説明したものでできますので、ぜひ作成してみてください。

終わりに

上の例では、D列には超丁寧語に調整した日本語を配置しています。DeepLなどの翻訳ツールとの違いとしては、語調などを調整した上で翻訳する機能を作れることが、生成AIを使った翻訳の良い点ですね。

また、今回は翻訳のユースケースで紹介しましたが、全く同じ方法で、要約や評価など様々な処理を一括で行うことができます。

このアカウントでは、普段使いからビジネス成果につながるユースケースまで、Difyを使ったAI活用を紹介していきます。ぜひフォローして最新情報をキャッチしてください!

よろしければ、アンケートにご協力ください。


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