URL_Search_Params
URL_Search_Params は、参加者のセッションが開始した URL に存在するすべてのパラメータを、JSON 形式で自動的にキャプチャする システム変数 です。各研究に存在します。ほとんどの研究者は、Labvanced がすでに認識しているパラメータ(クラウドソーシング ID、group、session など)をそれぞれの専用変数に読み込むため、直接触れる必要はありません。
目的
クラウドソーシングプラットフォームやパネルは、それぞれ独自の長い URL パラメータのリストを送信します。いくつかのパラメータは、参加者 ID のように統合の機能に不可欠であり、Labvanced はそれらを直接処理します。他のパラメータはサポート情報のようなもので、ターゲティング基準や試行 ID のように、専用の変数を持たずに記録するのに便利な場合があります。URL_Search_Params は、その2グループ目のためのキャッチオールです:セッションが開始する瞬間に全てのパラメータが自動的にキャプチャされ、設定する必要はありませんので、新しい統合はそのまま機能します。
このアイデアはシンプルさにあります:プラットフォームが送信する可能性のある各パラメータに専用の変数を必要とする代わりに、1つの変数ですべてを保持します。これにより、新しい統合が追加設定なしで機能し、研究で他のどの変数でも追跡されていない値が必要な場合でも、確認するための単一の場所が提供されます。
値自体は Labvanced からではなく、クラウドソーシングプロバイダから供給されます。例えば、Besample の tc は、Besample によって作成され、送信されます。Labvanced はそれを URL_Search_Params の一部としてリンクから読み取るだけです。
記録方法
完全なクエリ文字列は、セッションが開始する際に一度読み取られ、その時点から URL_Search_Params グローバル変数に保存されます。そこから、実験の残りの間、他の変数と同様に利用可能で、研究設計で必要なときにいつでも読み取る準備が整っています。
内部的には、値は次の形式の JSON 文字列として保存されます:
{"is_truncated": false, "params": {"type": "besample", "battempt": "3", "tc": "276", "tg": "f"}}
繰り返されるパラメータ名はその値の配列を保持します。is_truncated は、クエリ文字列が異常に長い場合、4096 文字を超えている場合に true です。その場合、制限を超えることになるパラメータは除外され、短いものはすべて記録されます。
除外されるのは、Labvanced 自身の実験 ID と、各クラウドソーシングプラットフォームの参加者識別パラメータであり、これは Crowdsourcing_SubjId に別々に保存されます(例えば、Prolific の場合は PROLIFIC_PID、Besample の場合は bpid)。プライバシーの理由から、Besample の bnum のように、さらにいくつかのパラメータが他のどこにも保存されずに除外されます。これは1回限りのコードで、単一の回答者の完了報酬に結びついています。
使用方法
Run JavaScript Action は、URL_Search_Params から値を取り出してそれに基づいて行動する方法です。より単純な代替手段との厳密などちらかではありません:特定の、すでに名前が付けられた値が1つだけ必要な場合は、Get URL Parameter Action で JSON やコードなしで取得できます。すべてのパラメータ名が既に知られているかどうかに関係なく、リンクに記録されている内容の完全な画像を知りたい場合は URL_Search_Params を利用してください。
tc は、回答者のターゲット国に対する Besample 自身の公式パラメータです。最初にトリガーを選択します。例えば On Frame Start やボタンのクリックなど、読み取りを開始するものを選びます。その後、Run JavaScript を使用して tc を URL_Search_Params から読み取り、作成した変数に保存します。完全に制御可能な変数、例えば Target_Country(まず変数タブで作成します):
var urlParams = JSON.parse(getValue("URL_Search_Params"));
setValue("Target_Country", urlParams.params.tc || ""); // ISO 3166-1 numeric country code, empty string if tc isn't on the link
|| "" が重要です:Get URL Parameter は、パラメータが欠けている場合でも自動的に空の文字列にデフォルト設定されるのに対し、ここでの欠損値が直接 setValue に渡されるとエラーが発生します。存在しない可能性のあるパラメータを読み取る際には、常にデフォルト値にフォールバックしてください。
そこから、Target_Country を他の変数と同様に使用します。例えば:
トリガー:
On Frame Start
アクション:Requirement (If... Then)→ 左側Variable→Target_Country、比較equal、右側Constant Value→276→ Then:Jump to Next Frame→ あなたの国固有のタスク
この方法を次の Get URL Parameter にある動作例で確認してください:Fetch Custom URL from Global Variable、同じ URL パラメータを両方向から読み取るライブラリ研究で、結果を直接比較できます。この URL をコピーして直接試してください:
https://www.labvanced.com/player.html?id=88576&tc=276
ご質問がある場合は、お問い合わせください。