質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.40%
AppSheet

AppSheetは、ノーコードでアプリ開発ができるプラットフォーム。プログラミングの知識がなくても、マウス操作だけで簡単にアプリを開発できます。サードパーティサービスに標準で接続できる他、サンプルアプリケーションも豊富。料金がリーズナブルな点も特徴です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

279閲覧

Google AppSheetをDifyに連携させた際のエラー

Van

総合スコア2

AppSheet

AppSheetは、ノーコードでアプリ開発ができるプラットフォーム。プログラミングの知識がなくても、マウス操作だけで簡単にアプリを開発できます。サードパーティサービスに標準で接続できる他、サンプルアプリケーションも豊富。料金がリーズナブルな点も特徴です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2024/07/15 23:39

編集2024/07/16 13:34

※本件は他サイトでマルチポストしております。(Qiitastack overflowstack overflow 日本語版)
他のサイトで回答やヒントなどの情報が得られた場合、自己回答で情報共有させていただきます。

実現したいこと

Google AppSheetでToDoリストを作成しました。
イメージ説明
次の段階として、
・Google AppSheetにタスクを新規追加。

・連携させたGoogle Apps ScriptDifyのワークフローのAPIを呼び出し。

・Difyのワークフローで入力したタスクに関するアドバイスをLLM(Gemini Pro)に出力させる。

・LLMの出力文をGoogle AppSheetに反映させる。

という実装をしたいと考えています。

発生している問題・分からないこと

Google AppSheetのモニター画面にエラーが表示され、LLMの出力がGoogle AppSheetに反映されません。
修正が必要な内容についてご教示いただけないでしょうか。

↓ Google AppSheetの参照元のスプレッドシート
イメージ説明

↓ Difyのワークフロー
イメージ説明

↓ Google AppSheetのモニター画面
イメージ説明

エラーメッセージ

error

1Error encountered in step with name [New step]: The tasks argument included a null value. (Parameter 'tasks')

該当のソースコード

js

1function sendChildrenQuestion() { 2 // スプレッドシートのIDは、スプレッドシートのURLに含まれています。 3 // 例えば、URLが https://docs.google.com/spreadsheets/d/abcd1234efgh5678ijkl90mnopqrstuv の場合、 4 // abcd1234efgh5678ijkl90mnopqrstuv がスプレッドシートのIDです 5 var spreadsheetId = 'MY SPREADSHEET ID'; // TODO スプレッドシートのIDを書き換え 6 var sheetName = 'シート1'; 7 8 var spreadsheet = SpreadsheetApp.openById(spreadsheetId); 9 var sheet = spreadsheet.getSheetByName(sheetName); 10 11 // B列のデータをすべて取得 12 var data = sheet.getRange('B:B').getValues(); 13 14 // 最後の行を特定(空のセルは除外) 15 var lastRow = data.filter(String).length; 16 17 // 最後の行の質問を取得 18 var question = sheet.getRange('B' + lastRow).getValue(); 19 20 var url = 'https://api.dify.ai/v1/workflows/run'; // リクエストを送るURL 21 22 // リクエストのヘッダー情報 23 var headers = { 24 'Content-Type': 'application/json', 25 'Authorization': 'Bearer {MY Dify API}' // TODO DifyワークフローのAPIキーで書き換え 26 }; 27 28 // リクエストのボディデータ 29 var payload = { 30 'inputs': {'Input':question}, // TODO Difyのワークフローの開始で設定した変数名 31 'response_mode': 'blocking', 32 'user': 'user123' 33 }; 34 35 // オプションの設定 36 var options = { 37 'method': 'post', 38 'headers': headers, 39 'payload': JSON.stringify(payload), 40 'muteHttpExceptions': true // これをtrueにすると、エラーが発生しても例外がスローされません 41 }; 42 43 // HTTP POSTリクエストの送信 44 try { 45 var response = UrlFetchApp.fetch(url, options); 46 // Logger.log(response.getContentText()); // レスポンスの内容をログに出力 47 var jsonResponse = response.getContentText() 48 49 // JSONをオブジェクトに変換 50 var responseObject = JSON.parse(jsonResponse); 51 52 // 必要なデータを取得 53 var taskId = responseObject.task_id; 54 var workflowRunId = responseObject.workflow_run_id; 55 var data = responseObject.data; 56 var status = data.status; 57 var outputs = data.outputs; 58 var answer = outputs.text; 59 60 // ログに出力 61 Logger.log('Task ID: ' + taskId); 62 Logger.log('Workflow Run ID: ' + workflowRunId); 63 Logger.log('Status: ' + status); 64 Logger.log('Outputs Text: ' + answer); 65 66 // G列に返却された値を書き込み 67 sheet.getRange('G' + lastRow).setValue(answer); 68 } catch (e) { 69 Logger.log('Error: ' + e.message); // エラーメッセージをログに出力 70 } 71}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Google AppSheetは以下のサイトを参考に作成しました。
https://www.yoshidumi.co.jp/collaboration-lab/appsheet-tasks

Google Apps Scriptのコードは以下の記事を参考に作成しました。
https://qiita.com/cog1t0/items/5ad8da7a09ac2d29ab2a#gas%E3%81%AE%E6%BA%96%E5%82%99

補足

※実際は、Google Apps Scriptの'MY SPREADSHEET ID'にはスプレッドシートのID、'MY Dify API'にはDifyのAPIを入力しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決することができました。
Google Apps ScriptのコードでDifyの関数を指定する際、シングルクオーテーションが不要でした。
これにて質問はクローズとさせていただきます。

diff_javascript:修正箇所

1- 'inputs': {'Input':question}, // TODO Difyのワークフローの開始で設定した変数名 2+ 'inputs': {Input:question}, // TODO Difyのワークフローの開始で設定した変数名

投稿2024/07/17 11:37

Van

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問