Можно ли отображать встроенные данные с идентификатором из списка контактов в качестве ссылки в опросе Qualtrics? - PullRequest
3 голосов
/ 29 мая 2019

В моем опросе мне нужно показать несколько разных ссылок нескольким респондентам, где каждому респонденту назначено более 20 уникальных ссылок.

По сути, я хочу направить ссылку в вопрос опроса, чтобы динамически отображать их разным респондентам. Я пытался сопоставить идентификаторы наблюдений («obsid») со ссылкой, хранящейся как внедренные данные в списке контактов («link»), создав функцию, которая возвращает соответствующую ссылку с указанным идентификатором (где я могу заполнить идентификатор). добавив строку запроса к URL-адресу ссылки на опрос, разосланной разным респондентам.) Я устанавливаю это как новое поле встроенных данных ('matchlink') через JS и передаю его в вопрос опроса в виде интерактивной ссылки.

В JS я создал таблицу («ID_table»), которая вызывает внедренные данные из списка контактов. Затем функция getLookupTableByID() используется для сопоставления этого идентификатора со значением ссылки. Это адаптировано из https://thepoliticalmethodologist.com/2019/05/23/utilizing-javascript-in-qualtrics-for-survey-experimental-designs/, где они вручную вводят значения в таблицу поиска. Вместо этого я хочу извлечь эти значения из предварительно определенной метки встроенных данных из файла .csv.

Ниже мой JavaScript. Затем я устанавливаю новое поле встроенных данных «matchlink» в верхней части потока опроса и оставляю поле пустым.

var ID_table = {
  ID: "${e://Field/obsid}",
  link: "${e://Field/link}"
};

function getLookupTableByID(mytable, IDfield, ID, returnfield) {
  matchindex = null;
  try {
    //this matches the panel data observation ID (obsID) with the row ID (ID) variable in the JS table above
    var matchindex = mytable[IDfield].indexOf(ID);
    //this returns the value of the response (defined in JS table) at the matching index
        var matchreturn = mytable[returnfield][matchindex];
  } catch (ex) {
    console.log(ex);
  }
  return matchreturn;
}


//get observation ID (obsid) from panel data
var obsID = Qualtrics.SurveyEngine.getEmbeddedData("obsid");


//create new Embedded Data field with this function that corresponds to the matched file to be shown
var match = getLookupTableByID(ID_table, "ID", obsID, "link");
    Qualtrics.SurveyEngine.setEmbeddedData('matchlink', match);


jQuery("#matchlink").html(ID_table.link);

Тем не менее, когда я указываю гиперссылку «matchlink» в контент опроса, она не отображается. Я думаю, что это может иметь какое-то отношение к HTML, но это все новое мне и мне трудно понять, как правильно отобразить ссылку. Кажется, что я хочу сделать, похоже на то, что было сделано здесь: https://www.qualtrics.com/community/discussion/3530/how-to-save-the-embedded-data-in-the-csv-file-how-to-show-the-content-of-the-embedded-data-in-a-q

В HTML у меня есть:

<div>Please click on <a href="${e://Field/matchlink}" target="_blank">this link</a> to view the article.&nbsp;</div><div>&nbsp;</div>

Я тоже пробовал это, но я уверен, что это неправильное форматирование:

<div>Please click on <span>id="matchlink">this link</span> to view the article.&nbsp;</div><div>&nbsp;</div>

Буду очень признателен за любые идеи по исправлению кода! Я также открыт для альтернативных подходов к решению более широкой задачи. Надеюсь, это понятно.

Заранее спасибо !!

...