#' Function for getting responses from a survey via LimeSurvey API
#' todo: documentation
#' @export
#'
#'
# export_responses
# /**
# * RPC Routine to export responses.
# * Returns the requested file as base64 encoded string
# *
# * @access public
# * @param string $sSessionKey Auth credentials
# * @param int $iSurveyID Id of the Survey
# * @param string $sDocumentType pdf,csv,xls,doc,json
# * @param string $sLanguageCode The language to be used
# * @param string $sCompletionStatus Optional 'complete','incomplete' or 'all' - defaults to 'all'
# * @param string $sHeadingType 'code','full' or 'abbreviated' Optional defaults to 'code'
# * @param string $sResponseType 'short' or 'long' Optional defaults to 'short'
# * @param integer $iFromResponseID Optional
# * @param integer $iToResponseID Optional
# * @param array $aFields Optional Selected fields
# * @return array|string On success: Requested file as base 64-encoded string. On failure array with error information
# * */
lsGetResponses = function(surveyID,
                          documentType = "csv",
                          languageCode = "en",
                          completionStatus = "all",
                          headingType = "code",
                          responseType = "long",
                          fromResponseID = NULL,
                          toResponseID = NULL,
                          fields = NULL,
                          lsAPIurl = getOption("lsAPIurl"),
                          sessionKey = NULL,
                          usageStats = getOption("LimeRickStats")
                          ){
    # todo: wokring with other document types (JSON especially; is a bit
    # problematic)
    # todo: test different language codes, completion statuses, heading and
    # response types
    # todo: implement from and to ResponseID
    if (is.null(lsAPIurl))
         stop("Need to specify LimeSurvey API URL (lsAPIurl). \nYou can do it once by options(lsAPIurl = 'your_api_url').")
    if (is.null(sessionKey)) { sessionKey = lsSessionCache$sessionKey }
    if (is.null(sessionKey))
        stop("Need to have a session key. Use lsSessionKey('get') function.")
    if (!completionStatus %in% c("all", "complete", "incomplete"))
         stop("Wrong completionStatus parameter. Available are: 'all', 'complete', 'incomplete'.")
    # setting parameters for API call
    params = list(sSessionKey = sessionKey,
                  iSurveyID = surveyID,
                  sDocumentType = documentType,
                  sLanguageCode = languageCode,
                  sCompletionStatus = completionStatus,
                  sHeadingType = headingType,
                  sResponseType = responseType
                  # todo: there is a problem with API with setting this params
                  # to NULL: Error: Argument 'txt' must be a JSON string, URL or
                  # file.
                  # sFromResponseID = NULL,
                  # sToResponseID = NULL,
                  # sFields = NULL
                  )
    # API call with export_responses method
    method = "export_responses"
    data = lsAPI(method = method,
                 params = params,
                 lsAPIurl = lsAPIurl)
    # decoding data from base64 format
    data = rawToChar(base64enc::base64decode(data))
    # importing data from CSV format into data frame
    df = read.csv(textConnection(data),
             encoding = "UTF-8",
             stringsAsFactors = FALSE)
    # monitoring usage of the function
    lsAddPackageStats(functionName = "lsGetResponses",
                      functionStats = NROW(df),
                      usageStats = usageStats
                      )
    # returing data frame
    df
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.