Loopのparameterへの参照は,this.options.templateParametersで行うことができます。そして,この変数に各parameterと値を連想配列(dictionary)すなわち{key: value}という形で格納することができます。

例えば,loopのparameterにitemという名前で単語を数語格納する場合,GUIでは以下になります。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d8918fea-5236-474c-a441-ab3fb794019a/_2020-04-28_18.58.43.png

これと同様の操作をScriptsで行う場合は「Scripts」で「before: prepare」のタイミングで以下のように記述します。なお,この場合はLoopのparameterに何も設定しないでください。

このスクリプトでは,単語リスト(itemList)を配列で格納した後に,LoopのParameterとしてitemというkeyで単語リストの単語を追加しています。基本的には,GUIで行った操作をScriptsで行っているだけですが,この方法を使うことでより複雑なパラメータ設定を実現できます。例えば,参加者ごとに2つの刺激リストのいずれかをランダムに割り当てない場合は以下のように記述することで,ランダムにいずれかの刺激リストを割り当てることができます(ちなみに呈示順はデフォルトではランダムです)。他にも色々な使い道はあると思います。

//単語リスト
const listA = ['リンゴ', 'ミカン', 'スイカ']
const listB = ['バナナ', 'メロン', 'キウイ']

//単語リストの条件分岐
const set = this.random.range(0,2)

//単語リストを格納
//listAを割り当てる場合
if(set == 0)
{
  for(i in listA)
  {
    this.options.templateParameters.push({item: listA[i]})
  }
}
//listBを割り当てる場合
else if(set == 1)
{
  for(i in listB)
  {
    this.options.templateParameters.push({item: listB[i]})
  }
}

ifではなくswitchでもOKです。

//単語リスト
const listA = ['リンゴ', 'ミカン', 'スイカ']
const listB = ['バナナ', 'メロン', 'キウイ']

//単語リストの条件分岐
const set = this.random.range(0,2)

//単語リストを格納
switch(set){
	case 0:
	  for(i in listA)
	  {
	    this.options.templateParameters.push({item: listA[i]})
	  }
		break;
	
	case 1:
	  for(i in listB)
	  {
	    this.options.templateParameters.push({item: listB[i]})
	  }
		break;
}

©2020 Masanori Kobayashi