みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
$responseという変数内にXML形式のデータが格納されている状態で、
$targetに取り出したい値を入力するとその値を変数名としタグ内の値を取り出す関数を作成しました。
$response; 値:
・・・・・・・・・・・・・・・・・・
<Status>承認待ち</Status>
・・・・・・・・・・・・・・・・・・
$target; 値:"Status"
$d; 値:
Let(
[
変数名 = "$" & Lower ( $target ) ;
値 = Let ([
$p1 = Position ( $response ; "<" & $target & ">" ; 1 ; 1 );
$p2 = Position ( $response ; "</" & $target & ">" ; 1 ; 1 );
$tn = $p2 - $p1];
Middle ( $response ; $p1 + Length ( "<" & $target & ">" ) ; $tn - Length ( "<" & $target & ">" ) )
) ;
関数 = "Let(" & 変数名 & "=" & Quote (値) & ";" & Quote ( "" ) & ")"
];
Evaluate (関数)
)
を実行することで
$status; 値:承認待ち の変数が出来上がります。
動的に作成した変数と値を戻す作業も動的に変化させたいのですが、その方法がわからず困っています。
現在のスクリプト終了[テキスト結果: "$" & Lower ( $target )]とすると
$statusが戻ってきて中身は何も無い変数が返ってきます。
解決方法をご存じの方おられましたら教えて頂きたいです。
作ったのは関数なのに、スクリプトで返すという点が意味がよくわかりませんが、
「$statusが戻ってきて中身は何も無い変数が返ってきます。」変数名を文字列として返しているだけなので、変数値はそれとは特に関係ないです。
$変数はローカル変数なのでスクリプトが終われば削除されますから、$$変数にしてみたら?
現在のスクリプト終了[テキスト結果: "$" & Lower ( $target )]とすると
にすると、文字列の、 "$" & Lower ( $target ) が返ります。
その内容を返したいのでしたら、現在のスクリプト終了[テキスト結果: Evaluate ( "$" & Lower ( $target ) )] とするといいのでは。
"$" & Lower ( $target ) & "値:" & GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $target & ">" ; ¶ ];[ "</" & $target & ">" ; ¶ ]) ; 2 )
だけで取得できますよ。
Last edited by Shin (2023-04-28 15:10:53)
Offline
作ったのは関数なのに、スクリプトで返すという点が意味がよくわかりませんが、
「$statusが戻ってきて中身は何も無い変数が返ってきます。」変数名を文字列として返しているだけなので、変数値はそれとは特に関係ないです。
$変数はローカル変数なのでスクリプトが終われば削除されますから、$$変数にしてみたら?
条件を訂正します。スクリプト内で条件分岐をさせたいと考えております。
If [ $status = "承認待ち" ]
スクリプト実行
End If
とさせたいのですが、If内の$statusに動的に作成した変数名と値を入れたいイメージです。
"$" & Lower ( $target ) & "値:" & GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $target & ">" ; ¶ ];[ "</" & $target & ">" ; ¶ ]) ; 2 )
だけで取得できますよ。
ありがとうございます。
$targetを"Status"とし
"$" & Lower ( $target ) & "値:" & GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $target & ">" ; ¶ ];[ "</" & $target & ">" ; ¶ ]) ; 2 )
とすると値は「$status値:」となるのですが、
LetやEvaluateを活用する感じでしょうか?
If [ $status = "承認待ち" ] が、
If [ $item = "商品名" ] となったりする、ということですか。
でしたら、それぞれをスクリプトの引数で、$arg1 $arg2 を渡しておき。
If ( GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $arg0 & ">" ; ¶ ];[ "</" & $arg0 & ">" ; ¶ ]) ; 2 ) = $arg1 )
とすればいいのでしょうね。
Offline
If [ $status = "承認待ち" ] が、
If [ $item = "商品名" ] となったりする、ということですか。でしたら、それぞれをスクリプトの引数で、$arg1 $arg2 を渡しておき。
If ( GetValue ( Substitute ( $reponse ;[ ¶ ; "" ];[ "<" & $arg0 & ">" ; ¶ ];[ "</" & $arg0 & ">" ; ¶ ]) ; 2 ) = $arg1 )
とすればいいのでしょうね。
できました!!ありがとうございます!!
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 559.67 KiB (Peak: 579.2 KiB) ]