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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Node-RED

Node-REDは、ビジュアルプログラミング向けのフローベース開発ツールです。ブラウザベースのUIになっており、さまざまなノード(Node)を結びつけることでフローを作成でき、処理を実現します。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Q&A

解決済

1回答

3080閲覧

Node-REDで取得したデータをGoogleスプレッドシートへ書き出したい

boriko

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Node-RED

Node-REDは、ビジュアルプログラミング向けのフローベース開発ツールです。ブラウザベースのUIになっており、さまざまなノード(Node)を結びつけることでフローを作成でき、処理を実現します。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

0グッド

0クリップ

投稿2021/08/07 18:18

前提・実現したいこと

Node-REDを使用し、Googleスプレッドシートに読み取ったデータを書き込みたいのですが
どのようにノードをつなげればよいかわからず教えていただきたいです。

teachablemachineで作成したAIをcodepenというサービスを使ってwebアプリを作成しています。
Node-REDへの連携はできているので、debugノードに送られてきている情報を
スプレッドシートに書き込みたいのですが、ノードのつなぎ方がわからず
httpinノードから直接G-sheetノードにつなぐと、下記のようなエラーが発生しています

発生している問題・エラーメッセージ

The API returned an error: Error: Invalid values[0][0]: struct_value { fields { key: "confidence" value { number_value: 0.5305600166320801 } } fields { key: "label" value { string_value: "\345\270\255\343\201\253\343\201\204\343\202\213\343\202\210" } } }

エラーのNode-REDのフローはこのようになっています
イメージ説明

debugノードにつなぐと、きちんと情報がきています。
イメージ説明

試したこと

過去の質問等で同じような内容が無いか、ほかのサイト等も探してみましたが
超初心者の為、探し方も的外れなのか、なかなか進められずに悩んでおります。
質問の仕方も不十分かと思いますが、検索のコツなどがありましたら教えていただけると幸いです。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/08/09 08:02

元のCODEPENのプログラムに原因がある気がするのですが、そのcodepenのURLもしくはソースコード全部を記載することはできないのでしょうか。
boriko

2021/08/09 15:53

連絡が遅くなり申し訳ありません。また、情報が不足しているにも関わらず声をかけていただきありがとうございます。 下記にcodepenのURLを記載させて頂きます。 https://codepen.io/koboriharuka/pen/poPQMKV HTMLもCSSもJSもまだ全く書けず、色々調べたところから虫食いでつなげているので、混沌としていると思いますが、見てみていただけると幸いです。
guest

回答1

0

ベストアンサー

・原因
記載のエラーが発生する原因は、NODE-REDのGSHEETノードに

{ "confidence": 0.5305600166320801, "label": "席にいるよ" }

というオブジェクトが渡されているためと推測します。

GSHEETノードの先にあるGoogle spreadsheet APIのupdate関数のvaluesには、文字列・ブール値・数値いずれかを要素とする2次元配列([[~]]を渡さなければなりません。

単一の値や一次元配列を渡した場合であっても、GSHEETノード側で自動的に2次元配列に変換してくれます(ソース
しかし、今回はオブジェクトを渡しているため、オブジェクトを要素とする2次元配列に変換され、それがそのままGoogle spreadsheet APIに渡されてエラーになっているのではないかと思います。
(GSHEETノードのライブラリは、渡されたpayloadが単一値か、1次元配列、2次元配列のいずれかであるかまでは判定して次元を自動変換するが、その中身(要素)の型までは判定しない)

・対応案
codePenのjavascript下記の行を下記のように直した場合どうでしょうか。
(node側へ結果を渡す際、results[0]ではなく、results[0].labelを渡す)

diff

1 // 結果のresultsは配列ですが、先頭に中身があれば以下の処理を実行します 2 if (results[0] && results[0].label !=zenkai) { 3- await axios.post('https://nodered-自分のID.herokuapp.com/receiver', results[0]); 4+ await axios.post('https://nodered-自分のID.herokuapp.com/receiver', results[0].label);

NODE-Red歴1時間くらいなので的外れな回答であればすみません。

投稿2021/08/09 16:34

編集2021/08/09 16:48
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

boriko

2021/08/10 13:06

お忙しい中回答を頂きありがとうございます。お礼が遅くなり申し訳ありませんでした。 対応案にご記載いただいた内容を試したところ、Node-RED側のエラーメッセージが少し変化しました! まだ解決はできていないのですが、一歩前進した気がします。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問