Google AppSheetとDify連携について
※本件は他サイトでマルチポストしております。(teratail、stack overflow、stack overflow 日本語版)
他のサイトで回答やヒントなどの情報が得られた場合、自己回答で情報共有させていただきます。
解決したいこと
Google AppSheetでToDoリストを作成しました。
次の段階として、
・Google AppSheetにタスクを新規追加。
↓
・連携させたGoogle Apps ScriptでDifyのワークフローのAPIを呼び出し。
↓
・Difyのワークフローで入力したタスクに関するアドバイスをLLM(Gemini Pro)に出力させる。
↓
・LLMの出力文をGoogle AppSheetに反映させる。
という実装をしたいと考えていますが、Google AppSheetのモニター画面にエラーが表示され、LLMの出力がGoogle AppSheetに反映されません。
修正が必要な内容についてご教示いただけないでしょうか。
↓ Google Apps Scriptのコード
※実際は、'MY SPREADSHEET ID'にはスプレッドシートのID、'MY Dify API'にはDifyのAPIを入力しています。
Google Apps Script
function sendChildrenQuestion() {
// スプレッドシートのIDは、スプレッドシートのURLに含まれています。
// 例えば、URLが https://docs.google.com/spreadsheets/d/abcd1234efgh5678ijkl90mnopqrstuv の場合、
// abcd1234efgh5678ijkl90mnopqrstuv がスプレッドシートのIDです
var spreadsheetId = 'MY SPREADSHEET ID'; // TODO スプレッドシートのIDを書き換え
var sheetName = 'シート1';
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName(sheetName);
// B列のデータをすべて取得
var data = sheet.getRange('B:B').getValues();
// 最後の行を特定(空のセルは除外)
var lastRow = data.filter(String).length;
// 最後の行の質問を取得
var question = sheet.getRange('B' + lastRow).getValue();
var url = 'https://api.dify.ai/v1/workflows/run'; // リクエストを送るURL
// リクエストのヘッダー情報
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {MY Dify API}' // TODO DifyワークフローのAPIキーで書き換え
};
// リクエストのボディデータ
var payload = {
'inputs': {'Input':question}, // TODO Difyのワークフローの開始で設定した変数名
'response_mode': 'blocking',
'user': 'user123'
};
// オプションの設定
var options = {
'method': 'post',
'headers': headers,
'payload': JSON.stringify(payload),
'muteHttpExceptions': true // これをtrueにすると、エラーが発生しても例外がスローされません
};
// HTTP POSTリクエストの送信
try {
var response = UrlFetchApp.fetch(url, options);
// Logger.log(response.getContentText()); // レスポンスの内容をログに出力
var jsonResponse = response.getContentText()
// JSONをオブジェクトに変換
var responseObject = JSON.parse(jsonResponse);
// 必要なデータを取得
var taskId = responseObject.task_id;
var workflowRunId = responseObject.workflow_run_id;
var data = responseObject.data;
var status = data.status;
var outputs = data.outputs;
var answer = outputs.text;
// ログに出力
Logger.log('Task ID: ' + taskId);
Logger.log('Workflow Run ID: ' + workflowRunId);
Logger.log('Status: ' + status);
Logger.log('Outputs Text: ' + answer);
// G列に返却された値を書き込み
sheet.getRange('G' + lastRow).setValue(answer);
} catch (e) {
Logger.log('Error: ' + e.message); // エラーメッセージをログに出力
}
}
↓ Google AppSheetの参照元のスプレッドシート
発生している問題・エラーメッセージ
Error encountered in step with name [New step]: The tasks argument included a null value. (Parameter 'tasks')
自分で試したこと
Google AppSheetは以下のサイトを参考に作成しました。
Google Apps Scriptのコードは以下の記事を参考に作成しました。
0