I give Adobe a hard time on Craptivate (it is terrible) but I’ve just found something that doesn’t quite suck – a way to report on courses without an LMS. And this comes packaged with Captivate – the ‘Adobe Quiz Results Analyser’!
It’s very easy to set up:
- put ‘internalServerReporting.php’ and ‘internalserverread.php’ from your ‘C:\Program Files\Adobe\Adobe Captivate 8 x64\Templates\Publish’ directory in to a folder on a server which runs PHP.
- In Captivate publish settings, select ‘Internal Server’ as your LMS. In the configure dialogue, put in your URL for the ‘internalServerReporting.php’ file – and the particulars for your course:
- Now, when you complete your course, on the quiz results screen a dialogue will pop up asking the learner their name and email address. This gets sent off to the php file along with all the interaction data, which gets written into a folder structure matching your company/department/course settings. Each learner’s attempt is written as a separate xml file.
- Now, using the Quiz Results Analyser, you can get total attempts on a course, total passes, and drill down in to each learners records and so on as required. Note: this sortof relies on the analyser being on the server, or networked with the webserver (it only lets you select a local drive folder structure for the results) – I worked around this by just FTPing down all the results onto the desktop before doing reporting.
Pretty neat! As a band-aid in waiting for an LMS, it’s a simple thing that doesn’t require you to interact with IT which is just the best. Nice one.
Note: On further analysis, this is a Captivate special. While the email address is entered by the learner and this is written in to the xml attempt files, the results analyser completely ignores this field. And you use the results analyser to export all the combined XML as a CSV. So you can’t perform a match against your HR data to match completions to HR staff ID’s or anything, since names are pretty useless for that. Unique email addresses would have been OK, but again – no-one bothered to test this function out for real world application. You could work around this by re-templating the alert to say ‘enter your userID’ instead of their name, and then use that to match records; but again, you can’t edit the Captivate prompt.
There’s always something with Craptivate.
____
Update 05.02.2015 – Skip using Quiz Results Analyser completely
using macros in Excel, you can read the XML docs in to Excel directly, and get the email addresses and everything else too. This could then be matched against HR database data if required, to make sure all staff have completed something for example.
SO WHAT’S THE SCRIPT?!
Sub ListFiles() 'LISTFILES AND LISTMYFILES MODIFIED FROM 'http://excelexperts.com/VBA-Tips-List-Files-In-A-Folder '-------------------------------------------------------------------- 'DECLARE AND SET VARIABLEs Dim ShellApplication As Object Set ShellApplication = CreateObject("Shell.Application").BrowseForFolder(0, "Please choose a folder", 0, OpenAt) Path = ShellApplication.self.Path Set ShellApplication = Nothing [a3] = "XML" [b3] = "Files" '-------------------------------------------------------------------- 'DEFAULT PATH FROM HIDDEN SHEET Call ListMyFiles(Path, True) End Sub Sub ListMyFiles(mySourcePath, IncludeSubfolders) Set MyObject = New Scripting.FileSystemObject Set mySource = MyObject.GetFolder(mySourcePath) 'With SearchXML Application.ScreenUpdating = False '-------------------------------------------------------------------- 'FIND XML FILES ONLY, APPLY SEARCH CRIERIA, DISPLAY MATCHES ONLY For Each myFile In mySource.Files If Right(myFile.Name, 3) = "XML" Or Right(myFile.Name, 3) = "xml" Then 'IS XML? LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row '------------------------------------------------------------- 'IMPORT XML FILE ActiveWorkbook.XmlImport URL:=mySource & "\" & myFile.Name, _ ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$" & LastRow + 1) '------------------------------------------------------------ Debug.Print "date modified: "; myFile.DateLastModified 'DELETE MAPS maps = ActiveWorkbook.XmlMaps.Count For I = 1 To maps ActiveWorkbook.XmlMaps(1).Delete Next I End If Next If IncludeSubfolders Then 'SEARCH SUBFOLDERS FOR SAME CRITERIA For Each MySubFolder In mySource.SubFolders Call ListMyFiles(MySubFolder.Path, True) Next End If 'End With Application.ScreenUpdating = True End Sub Public Sub ClearSheet() Cells.Select Selection.ClearContents [a1].Select End Sub
So that’s that. Thanks Maudibe from some forum for that script (sorry I lost it).
Then in Captivate, set your first button to be in the quiz, reporting its interaction. That’ll give you a date of interaction completion (course begin time) – which you can then use with the session time to get a completion time if you really want to.
Leave a Reply