配列/連想配列(ループ)の練習用デモ

JA-Translator

Moderator
MacroDroid ver. 5.24.4 Pro で動作します。

配列/連想配列(ループ)の練習用のデモ版を作りました。
テンプレートをダウンロードして、実行してください。

1. リスト2つを組み込んであります:
  • 配列(色リスト)と
  • 連想配列(フルーツリスト)

2. 「好きな色?」「好きな食べ物?」を聞かれます。
3. Yes/Noで答えると、
4. 最後にポップアップで「選択したもの」が表示されます。


Screenshot_20220403-012034_MacroDroid.png

Screenshot_20220403-012041_MacroDroid.png

Screenshot_20220403-012203_MacroDroid.png

Screenshot_20220403-012220_MacroDroid.png
 

LinerSeven

Active member
>JATさん

こんにちわ。
まさに配列で悩んでいたところなので、
ご共有ありがとうございます。助かります…

しかしながら、ダウンロードリンクが、
残念なことに404エラーになってしまって
いるようです。
ご確認を頂けないでしょうか?

新機能なので、
扱いが難しいですね、配列型と辞書(連想配列)型は…
 

JA-Translator

Moderator
しかしながら、ダウンロードリンクが、
残念なことに404エラーになってしまって
いるようです。
ご確認を頂けないでしょうか?

お!
むふふ、私と同じ現象を体感中のご様子、嬉しいです(笑)🤣

ブラウザで開くと404エラーになります。
テンプレートのリンクは、MacroDroidのアプリで開く必要があります。

詳しくは、こちらが役に立つかも。
[解決] テンプレートのリンクをアプリで開けない


配列の操作は、MacroDroidの独自性があるので、少し難しいかもしれません。
最初は少し困惑しそうですが、
変数とアクション機能(ループ)と統合されている感じ。ある意味、手っ取り早くて、楽ですよね。
 

LinerSeven

Active member
SnapShot20220403T110527.jpg

なるほど!
Macrodroidアプリから、
Macrodroid Forumを開いてダウンロードしてもダメだったので、普通に、
テンプレートストアから「配列」で検索したら、目的のマクロを見つけることができました。

ありがとうございます!
 

JA-Translator

Moderator
キーワード検索「配列」で見つかりましたね。その方が手っ取り早かったですね。
とにかくダウンロードできて良かったです。😊
共有ありがとうございます。


Macrodroidアプリから、
Macrodroid Forumを開いてダウンロードしてもダメだったので、

ところで、お時間のあるときに。。。

実は、そこなんです、私もハマってしまった理由。

アプリからフォーラムを開いた時点で、おそらく「Googleアプリ」で開いてます。
(Chromeブラウザではなく、Googleアプリ)
そのままテンプレートを開くと、同様に「Googleアプリ」で開いているので、扱い的には「ブラウザで開く」と同じで、404エラーになります。

なので、システム本体の設定を確認して、
「フォーラムも、テンプレートストアも、MacroDroidアプリから開く」
という設定にする必要があります。
 

JA-Translator

Moderator
テンプレートストアから「配列」で検索したら、目的のマクロを見つけることができました。

見つかって良かったです。
見つけてくれて、ありがとう🥰


キーワード以外にも、
ID番号から検索も可能です。

テンプレートのリンクをコピーして、ID番号を調べたら、例えば
id=12165
で検索するとヒットします。
 

LinerSeven

Active member
SnapShot20220403T120649.jpg

SnapShot20220403T120654.jpg


SnapShot20220403T120702.jpg


>JATさん
上記の図のようにMacrodroidを利用して、macrodroid.comの対象マクロのidパラメータ、つまりマクロの掲載番号に対して、
POSTメソッドを要求すると、403が帰ってくるので、Macrodroid.com側で動いているサーバー側(nginx)の設定に起因する問題ですね。

解決策は、別のスレでJATさんが書かれているとおりで、おそらく通常のブラウザで解釈できないレスポンスが含まれており、それらを解釈させるためにはMacrodroidアプリを噛ますしか方法がない。
というところかと思われます。


検証と補足ありがとうございます。
助かりました。

JATさんのお陰で…
現状では、配列ループ内で動的に、
配列インデックスを変えた変数への値取得が無理なことがよくわかりました…


[lv=Array[lv=index]]と指定すると、
MagicText in MagicTextになって、配列型として解釈させたいのが本音ですが、外側のMagicTextグループは文字列として、解釈されてしまいますね。

となると、配列型や連想配列型の効率的な使い方は、今のところ、複数の型の異なる結果をindex指定で格納しておき、まるっと配列型全体指定でログなどに吐き出すか、通知させるか、という使い方が想定されている気がする次第です。
 

JA-Translator

Moderator
POSTメソッドを要求すると、403が帰ってくるので、Macrodroid.com側で動いているサーバー側(nginx)の設定に起因する問題ですね。

あら、さすが @LinerSeven さん、テクニカルチェックが鋭い!
外部からアクセス禁止にするために、意図的にサーバー側で規制しているのでしょうね?
なので、アプリから開くしかない、という結果に。

現状では、配列ループ内で動的に、
配列インデックスを変えた変数への値取得が無理なことがよくわかりました…

[lv=Array[lv=index]]と指定すると、
MagicText in MagicTextになって、配列型として解釈させたいのが本音ですが、外側のMagicTextグループは文字列として、解釈されてしまいますね。

そうなんですよ!私も同じくトライしてハマリました😊
そうしたくなりますよね~ なんだか、密かに同志感を感じて、喜んでたりして(笑)

ご指摘のとおり、MagicText in MagicText は、うまく動かないので、ループでマジックテキストを使って取得する必要があります。
これがMacroDroidの独自性!

■配列:
配列インデックス(見出し番号): [iterator_array_index]
配列の要素(値): [iterator_value]

■連想配列:
連想配列キー(見出し名): [iterator_dictionary_key]
配列の要素(値): [iterator_value]


そうなんですよね、となると、ループで配列を使おうとすると・・・?
ん? :unsure:
 

LinerSeven

Active member
@JATさん

Screenshot_20220405_092827.png

おそらく、ループの際の「プログラムを少し齧ったことのある方」には、上記が
解りやすいかと思う次第です。

配列の要素を全てチェックはしますが、
途中で目的の値を見つけたらループを抜ける、
という内容をMacrodroid書くと、上記の図のようになるのかな、と…。

こちらにサンプルをアップロードしました。

以上です。
宜しくお願いいたします。
 

JA-Translator

Moderator
お!ありがとうございます。
さっそくゲットしました✌️

うーん、少し時間いただいて、じっくり拝見しまーす。
 

JA-Translator

Moderator
お待たせしました〜
拝見しました

お〜!なるほどー、しっかりダメなパターンも組み込んで、いたせりつくせり細やかに。

指定要素ヒットまで回す、
分かりやすいです。🖐

前半の、回数で回す中に、条件で回す、
これは上級者向け〜🤗
私には高度すぎるかも(笑)

ループの中身を見ようと思っても設定に入ってしまい、中身が見られなかった
MacroDroid改善して欲しいな〜😙
 
Top