# Web APIから入れ子のJSONを取得してAdaloで表示したい

**URL:** <https://www.nocode-faq.com/t/topic/2366>\
**Category:** Adalo\
**Created:** [2021 年 11 月 23 日午前 3:38 UTC](https://www.nocode-faq.com/t/topic/2366 "2021-11-23T03:38:39Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![shnd](https://avatars.discourse-cdn.com/v4/letter/s/eb9ed0/32.png) [@shnd](https://www.nocode-faq.com/u/shnd)\
**Post date:** [2021 年 11 月 23 日午前 3:38 UTC](https://www.nocode-faq.com/t/topic/2366/1 "2021-11-23T03:38:39Z")

</div>

WebAPIから入れ子の構造のJSONデータを取得してAdaloに取り込みたいのですがやり方が分かりません。

（やりたい事）  
ボタンを押すと下記の星占いのサイトから本日の12星座ごとの運勢を取り出しAdaloで表示させたい。  
サイトURL: [https://jugemkey.jp/api/waf/api\_free.php](https://jugemkey.jp/api/waf/api_free.php)  
APIのURL： [http://api.jugemkey.jp/api/horoscope/free/](http://api.jugemkey.jp/api/horoscope/free/)

（困っている点）  
Adaloにボタンを設けCustomActionの設定をして占いサイトの情報を取り出しました。（下記画像）  
データは入れ子のJSONになっており、個々のデータをどのようにすれば取得できるかが分かりません。

データの構造（これが12星座ごとにある）  
日付：2021/11/23  
content：本日の占い  
money ：金運（number,5段階評価）  
job ：仕事運（number,5段階評価）  
item ：ラッキーアイテム（text）  
color ：ラッキーカラー(text)  
love ：恋愛運（number,5段階評価）

Adaloで個々のデータを取得できなかったのでスプレッドシートでGASを作り、入れ子のJSONを個別に分解整形しました。データが入っているJSONはhoroscopeという名前の配列で、ここにプロパティ名を付けてそれぞれのデータはGAS上で取得は出来ました。これをAdaloでやるにはどうしたらいいか教えて頂きたいのです。

GASでのデータ取り出し例：  
本日の金運： horoscope[“2021/11/23”][money]  
本日のラッキーアイテム： horoscope[“2021/11/23”][item]

(占いサイトから取得したJSONの中身)

 ![hr01](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/f/fda04dcc750673af99e636f24491788f7704cb60.png)

---

<div class="post-metadata">

**Author:** ![tsubasa](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/tsubasa/32/8670_2.png) [@tsubasa](https://www.nocode-faq.com/u/tsubasa)\
**Post date:** [2021 年 11 月 23 日午後 12:34 UTC](https://www.nocode-faq.com/t/topic/2366/2 "2021-11-23T12:34:07Z")

</div>

WebAPIが作れてないだけだと思います。  
（もともと、知っていたら申し訳ないですが。。。）

データを通信するためには、データの受け渡し **方法** を作る必要があります。  
JSONは、受け渡しの **結果** であり、受け渡し **方法** でありません。なので、JSONを作成しただけだとAdaloへ受け渡し方法が無いので、通信できないです。

 ![image](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/0/0116b49bb9952de79b4000ab715089f9cc531e67.jpeg)  
【引用】  
APIの概要とデータの取得

> **[Web API入門 | 第1回 APIの概要とデータの取得](https://www.codegrid.net/articles/2018-web-api-1/)**
>
> サービスのデータやプログラムを外部から利用できるWeb APIの使い方を解説していきます。まずはWeb APIの役割を理解し、データを取得してみましょう。

具体的には、現在の星占いのサイト（スプレットシート？）内で、Adalo のBearer の部分を作る必要があります。

 ![image](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/f/f2303ead55b89c02d0374ad467e4c6f6fb2f01eb.png)

私の知っている範囲での解決方法としては、  
取得方法①AWS API gateway を使う（コーディングですが、一番一般的な方法です）

> **[Amazon API Gatewayは「HTTP API」と「REST API」のどちらを選択すれば良いのか？ #reinvent | DevelopersIO](https://dev.classmethod.jp/articles/amazon-api-gateway-http-or-rest/)**
>
> Amazon API Gatewayの新機能「HTTP API」はREST APIの上位互換というわけではなく「API Gatewayのコアな機能に特化して低コストで利用したい場合に適した機能」という位置付けになっています。つまりREST APIと比較するとできないことがいくつかあります。本記事では新しく提供されるHTTP APIがどういう場合に適しているかより掘り下げてみました。

取得方法②スプレットシートでREST APIを使う (やったことないのですが、結構面倒そうです）

# [Google スプレッドシートを REST API で操作](https://fits.hatenablog.com/entry/2015/07/06/211525)

取得方法③Airtableに格納して、Airtable のAPIでAdaloから呼び出しする。  
Airtableの同期はできませんが、GoogleSheetのimportは可能です。

 ![image](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/7/71bb3591ee5b91e722518347351681ad0a2c9860.png)

上記のいずれかになると思います。

---

<div class="post-metadata">

**Author:** ![shnd](https://avatars.discourse-cdn.com/v4/letter/s/eb9ed0/32.png) [@shnd](https://www.nocode-faq.com/u/shnd)\
**Post date:** [2021 年 11 月 23 日午後 11:24 UTC](https://www.nocode-faq.com/t/topic/2366/3 "2021-11-23T23:24:23Z")

</div>

いろいろ説明頂きましたがちょっとよく分からないです。スプレッドシートの事は一旦忘れてもらって、占いのサイトから必要な情報（本日の運勢等）をAdaloで入手するにはどうすればいいかという質問です。

Adaloでbearerの部分を作る必要があると書かれていますが、このサイトは認証なしでデータ（JSON）が入手できます。Adaloでボタン作り、Custom Actionの設定をしてWebAPIのURL入力してGETを使えばデータは取れるのです。（そのままやると1か月分のデータが来てしまう。11月分のすべてのデータが来る）

悩んでいるのはその月1か月分のデータが来てしまい、当日分のデータだけ、できれば指定した星座の分だけデータが取れればいいのですが、その方法が分からないのです。

欲しいデータをデータベースに取得するためにプロパティを指定するところで1か月分のデータの選択肢が出てきてしまい、困っています。変数を使い動的に必要なものだけ入手したいのですが、そのやり方が分からないんです。

多分質問の意味が多分理解してもらえないんだと思います。この占いのサイトがZapierなどで連携できるなら必要なデータをAdaloにそのまま流し込めると思うんですが、APIを公開していても連携アプリを使えないんでどうやればいいんかという事を知りたいのです。

---

<div class="post-metadata">

**Author:** ![tsubasa](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/tsubasa/32/8670_2.png) [@tsubasa](https://www.nocode-faq.com/u/tsubasa)\
**Post date:** [2021 年 11 月 24 日午前 1:50 UTC](https://www.nocode-faq.com/t/topic/2366/4 "2021-11-24T01:50:37Z")

</div>

回答になってなくて申し訳ないです。APIはすでに公開しているのでしたね。この辺、私も不得意分野なので申し訳ないです。(他の方も良ければコメントをー）

> 悩んでいるのはその月1か月分のデータが来てしまい、当日分のデータだけ、できれば指定した星座の分だけデータが取れればいいのですが、その方法が分からないのです。

いま試しに、Costomアクションで、取りましたが、  
AdaloからのRecordを取得しても確かに全部 11月分が全て取得されてしまいますね。。

API base URL に動的なパラメーターを入力するととれると思ったんですが、、  
[http://api.jugemkey.jp/api/horoscope/freee?[\*マジックテキストでその月を出す]](http://api.jugemkey.jp/api/horoscope/freee?%5B*%E3%83%9E%E3%82%B8%E3%83%83%E3%82%AF%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%A7%E3%81%9D%E3%81%AE%E6%9C%88%E3%82%92%E5%87%BA%E3%81%99%5D)

 ![image](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/1/12ce1dc034cf43049e6532c2f0b7d4c199b59706.png)

> 本日の金運： horoscope[“2021/11/23”][money]

ちなみに、  
元データの日付フォーマットって、記号を修正できないのでしょうか？  
2021/11/23 ではなく、2021-11-23 にして、同じことしても取得できなさそうです？

Apibase で以下のようなイメージで取れそうかなと。  
[http://api.jugemkey.jp/api/horoscope/freee?sign=牡牛座](http://api.jugemkey.jp/api/horoscope/freee?sign=%E7%89%A1%E7%89%9B%E5%BA%A7)

\*result key で2021-11-23 （その日の値）

---

<div class="post-metadata">

**Author:** ![shnd](https://avatars.discourse-cdn.com/v4/letter/s/eb9ed0/32.png) [@shnd](https://www.nocode-faq.com/u/shnd)\
**Post date:** [2021 年 11 月 24 日午前 3:36 UTC](https://www.nocode-faq.com/t/topic/2366/5 "2021-11-24T03:36:31Z")

</div>

お騒がせしています。質問の内容を理解して頂けたようでうれしいです。  
1回のリクエストで不必要な大量のデータが来てしまうので必要なものだけ抽出したいというのが本件の趣旨です。（占いサイトは例として挙げているだけで、私は占いには興味はありません。）

同じような例は他にたくさんあると思うんですが。例えば天気予報APIなどの場合、地域をまず指定して欲しいデータを変数で指定していくと思うんですけど・・・・

１．指定した日付のデータだけ取得する方法  
・・・占いAPI のBaseURLに日付のデータをくっつけてGETすると確かにその日のデータだけは取れるんです。ただ日付を変数にして動的に選択できるようにするやり方が分からないんです。

例：今日（2021/11/24）のデータだけ取得する場合のURLの書き方  
[http://api.jugemkey.jp/api/horoscope/free/2021/11/24/](http://api.jugemkey.jp/api/horoscope/free/2021/11/24/)

Base URLにパラメータを付加するやり方も考えましたがうまく行きませんでした。  
[http://api.jugemkey.jp/api/horoscope/free/?date=2021/11/24](http://api.jugemkey.jp/api/horoscope/free/?date=2021/11/24)

誰か分かる方いませんか？kinariさんとか。

---

<div class="post-metadata">

**Author:** ![kinari](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/kinari/32/6625_2.png) [@kinari](https://www.nocode-faq.com/u/kinari)\
**Post date:** [2021 年 11 月 24 日午前 10:51 UTC](https://www.nocode-faq.com/t/topic/2366/6 "2021-11-24T10:51:31Z")

</div>

確かに定数だとうまくいくのにマジックテキスト入れるとダメですねー

[https://jugemkey.jp/api/waf/api.php](https://jugemkey.jp/api/waf/api.php)  
👆これ見る限りでは間違ってなさそうなんですけどね🤔なんででしょ

 ![スクリーンショット 2021-11-24 19.45.10](https://us1.discourse-cdn.com/flex020/uploads/ncc_forum/original/2X/6/68e0f47d47d35d41d0dadf89e204fb1fe74bc9d4.png)

---

<div class="post-metadata">

**Author:** ![shnd](https://avatars.discourse-cdn.com/v4/letter/s/eb9ed0/32.png) [@shnd](https://www.nocode-faq.com/u/shnd)\
**Post date:** [2021 年 11 月 24 日午後 12:35 UTC](https://www.nocode-faq.com/t/topic/2366/7 "2021-11-24T12:35:52Z")

</div>

kinari様いつもありがとうございます。その式であっていると思いますよ！日付を変数のDateにしても私はちゃんと動きましたよ。（Inputの設定でDate&Time 、Date、例 2021/11/23で入力）

ただ、問題なのは日付で絞っても星座が12個あるので、星座で絞り込みしないとAdaloのDBにデータが飛んでいかないことです。星座を使った絞り込みがどうやっても出来ないです。

URLにいろいろパラメータくっつけてやったのですが全部だめでした。  
（ダメな例）sign=星座  
[http://api.jugemkey.jp/api/horoscope/free/変数のDate/?q=sign](http://api.jugemkey.jp/api/horoscope/free/%E5%A4%89%E6%95%B0%E3%81%AEDate/?q=sign)

参りました

---

<div class="post-metadata">

**Author:** ![kinari](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/kinari/32/6625_2.png) [@kinari](https://www.nocode-faq.com/u/kinari)\
**Post date:** [2021 年 11 月 24 日午後 12:53 UTC](https://www.nocode-faq.com/t/topic/2366/8 "2021-11-24T12:53:25Z")

</div>

オーそうなんですねー良かったです👍

サイトの方にも星座の絞り込み載ってないですねー

---

<div class="post-metadata">

**Author:** ![shuhayas](https://sea2.discourse-cdn.com/flex020/user_avatar/www.nocode-faq.com/shuhayas/32/5306_2.png) [@shuhayas](https://www.nocode-faq.com/u/shuhayas)\
**Post date:** [2021 年 12 月 2 日午後 2:22 UTC](https://www.nocode-faq.com/t/topic/2366/9 "2021-12-02T14:22:34Z")

</div>

parabola.ioを使用するとできると思いますよ！

> **[Parabola: automate any manual task](https://parabola.io/)**
>
> Parabola is your toolkit for faster, smarter work. Automate any manual task you usually do in a spreadsheet.
