Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Error invalid questionID en solicitud de API

  • blacho
  • blacho's Avatar Topic Author
  • Offline
  • Junior Member
  • Junior Member
More
1 week 4 days ago #261106 by blacho
Ayúdenos a ayudarle y rellene los siguientes campos:.
Su versión de LimeSurvey:6.2.11
Servidor propio o LimeSurvey Cloud:
Plantilla de diseño utilizada: fruity
==================
Buenas tardes quiero cambiar una respuesta desde la api de limesurvey, me conecto por medio de python pero este codigo 
Code:
import urllib.request
import json
import ssl
 
# Deshabilitar la verificación del certificado SSL
ssl._create_default_https_context = ssl._create_unverified_context
 
def get_question_properties(session_key, survey_id, question_id, language=None):
    url = "https://blacho.limesurvey.net/index.php/admin/remotecontrol"
 
    # Construir los parámetros para la solicitud JSON-RPC
    params = {
        "method": "get_question_properties",
        "params": [session_key, survey_id, question_id, language],
        "id": 1
    }
 
    # Codificar los datos como JSON
    data = json.dumps(params).encode('utf-8')
 
    # Configurar los encabezados de la solicitud
    headers = {
        'Content-Type': 'application/json',
        'Connection': 'Keep-Alive'
    }
 
    # Crear la solicitud
    req = urllib.request.Request(url=url, data=data, headers=headers)
 
    try:
        # Realizar la solicitud
        with urllib.request.urlopen(req) as f:
            response = f.read().decode('utf-8')
            response_json = json.loads(response)
            print("Propiedades de la pregunta obtenidas con éxito:")
            print(response_json)  # Imprimir las propiedades de la pregunta
            return response_json
    except Exception as e:
        print("Error al obtener las propiedades de la pregunta:", e)
 
def set_question_properties(session_key, survey_id, question_id, properties):
    url = "https://blacho.limesurvey.net/index.php/admin/remotecontrol"
 
    # Construir los parámetros para la solicitud JSON-RPC
    params = {
        "method": "set_question_properties",
        "params": [session_key, survey_id, question_id, properties],
        "id": 1
    }
 
    # Codificar los datos como JSON
    data = json.dumps(params).encode('utf-8')
 
    # Configurar los encabezados de la solicitud
    headers = {
        'Content-Type': 'application/json',
        'Connection': 'Keep-Alive'
    }
 
    # Crear la solicitud
    req = urllib.request.Request(url=url, data=data, headers=headers)
 
    try:
        # Realizar la solicitud
        with urllib.request.urlopen(req) as f:
            response = f.read().decode('utf-8')
            response_json = json.loads(response)
            print("Respuesta de la API:")
            print(response_json)  # Imprimir la respuesta de la API
            return response_json
    except Exception as e:
        print("Error al establecer las propiedades de la pregunta:", e)
 
# Utilización de la función get_question_properties para obtener las propiedades de la pregunta Q00
session_key = "~SyMLnQBSwHIKI9kdnG80HAEiJAsCryf"
survey_id = 422613  # ID del formulario
question_id = '1'  # ID de la pregunta Q00
question_properties = get_question_properties(session_key, survey_id, question_id)
 
# Modificar las opciones de respuesta si las propiedades se obtienen correctamente
if question_properties:
    if 'result' in question_properties and 'answeroptions' in question_properties['result']:
        answer_options = question_properties['result']['answeroptions']
        if 'AO01' in answer_options and answer_options['AO01']['answer'] == 'Miguel Angel':
            answer_options['AO01']['answer'] = 'Andres'  # Cambiar 'Miguel Angel' por 'Andres'

    # Utilización de la función set_question_properties para aplicar los cambios
    if 'result' in question_properties and 'qid' in question_properties['result']:
        question_id = question_properties['result']['qid']
        response = set_question_properties(session_key, survey_id, question_id, {"answeroptions": answer_options})
        print("Resultado de la modificación de las opciones de respuesta:")
        print(response)  # Imprimir la respuesta de la API
 

me arroja resultado de error en questionID, no entiendo por qué sabiendo que estoy dando las credenciales correctas
me pueden decir por favor un enfoque diferente para hacer lo que quiero y gracias.
 

File Attachment:

File Name: limesurvey...2613.lss
File Size:134 KB

Please Log in to join the conversation.

Lime-years ahead

Online-surveys for every purse and purpose