Sync LimeSurvey results to Google Sheets using importxml for Dummies?
-
I believe I am one step closer to what I need. If I manage to locate the LimeSurvey config.php, I will know dblocation, dbname, dbuser and dbpwd. It should be easy from there.
In self-hosted LimeSurvey environments, it seems to be located here:
[limesurvey_installation]/application/config/config.php.The question now is where is the LimeSurvey config.php stored on Cloudron?
Unfortunately, config.json does not seem to provide the answer.
-
Unfortunately, I am still failing to connect Sheets to LimeSurvey.
$dblocation = CLOUDRON_MYSQL_URL ?
$dbname = CLOUDRON_MYSQL_DATABASE ?
$dbuser = CLOUDRON_MYSQL_USERNAME ?
$dbpwd = CLOUDRON_MYSQL_PASSWORD ?CLOUDRON_MYSQL_DATABASE and CLOUDRON_MYSQL_USERNAME
have identical values.CLOUDRON_MYSQL_URL starts with "mysql://..."
Not sure how to translate this into a URL. -
Unfortunately, I am still failing to connect Sheets to LimeSurvey.
$dblocation = CLOUDRON_MYSQL_URL ?
$dbname = CLOUDRON_MYSQL_DATABASE ?
$dbuser = CLOUDRON_MYSQL_USERNAME ?
$dbpwd = CLOUDRON_MYSQL_PASSWORD ?CLOUDRON_MYSQL_DATABASE and CLOUDRON_MYSQL_USERNAME
have identical values.CLOUDRON_MYSQL_URL starts with "mysql://..."
Not sure how to translate this into a URL.@marylou the mysql is not exposed to the world. It is internal. By Sheets, do you mean the SaaS product ? (or is this some plugin or something in LimeSurvey?).
Does Google Sheets support connecting via ssh tunnel? See https://docs.cloudron.io/guides/connect-mysql/
-
Just to mention, it's not quite the same as what you're trying to do, but if you can't get this working Nextcloud Form data can be automatically stored into a Nextcloud spreadsheet these days (much like how Google Forms works with Google Sheets)
-
Hi, Google Sheets, yes.
This description makes it sound really easy.
But... dblocation, dbname, dbuser, dbpwd.
Nextcloud is not an option at this time unfortunately.
I will find out if Google Sheets supports connecting vis ssh tunnel.
Thanks for your comments and help! -
@marylou the mysql is not exposed to the world. It is internal. By Sheets, do you mean the SaaS product ? (or is this some plugin or something in LimeSurvey?).
Does Google Sheets support connecting via ssh tunnel? See https://docs.cloudron.io/guides/connect-mysql/
Hi @joseph,
Google Sheets (Google version of MS Excel) does in fact support connecting via ssh tunnel and we can get it done.
But I still don't know how to adapt the variables in the script.This is the description in the LimeSurvey Manual:
Import & show data into a Google Drive Spreadsheet
Tested with: LS >= 2.05You can import any data (e.g. list of surveys or users, selected answers) stored in your limesurvey database using the "IMPORTXML" function.
Create a XML file to structure and print needed data (you should access it at http://mysite.com/myxml.php )
In your spreadsheet use the following format (pasting in a cell):=IMPORTXML("http://mysite.com/myxml.php?refresh=&GoogleClock()", "//mytaglabel")
To protect your XML file(s) from direct access you can put them in a dedicated folder and use a .htacess file to limit the access exclusively to Google Apps web crawlers filtered by ip ranges
order allow, deny deny from all # allow from your_ip allow from 66.249.64.0/19 # Used by User-Agents 'apps-spreadsheets' & 'Feedfetcher-Google' allow from 66.249.80.0/20 # Used by User-Agents 'apps-spreadsheets' & 'Feedfetcher-Google' allow from 64.233.160.0/19 # Used by 'GoogleApps' UA # Uncomment if necessary following ther IP ranges commonly used by Google INC. # allow from 46.108.0.0/18 64.18.0.0/20 66.249.80.0/20 72.14.192.0/18 74.125.0.0/16 173.194.0.0/16 207.126.144.0/20 209.85.128.0/17 216.239.32.0/19
PHP (XML output) file sample.
The following php file will generate an XML view printing ID, STARTDATE and STARTLANGUAGE values of a survey.
<?php /* - This php file will generate an XML file showing ID, STARTDATE and STARTLANGUAGE values of a survey. - Please edit variables for db credentials and survey id ($sid) */ header('Content-type: application/xml; charset=utf-8'); header ('X-Robots-Tag: none', true); // Fetch database credentials (much better outside the wwww root directory) // ************************ $dblocation = ' '; $dbname = ' '; $dbuser = ' '; $dbpwd = ' '; // ************************ // Create db connection $conn = new mysqli($dblocation, $dbuser, $dbpwd, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // Start XML output echo "<?xml version='1.0' encoding='utf-8'?>"; echo "<answers>"; // Define survey ID // ************************ $sid = "1234"; // ************************ $sql = "SELECT id, startdate, startlanguage FROM lime_survey_".$sid." ORDER BY 'id' LIMIT 100"; // $sql = "SELECT 1234X56X789, id, startdate, startlanguage FROM lime_survey_".$sid." ORDER BY 'id' LIMIT 100"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<item>\n"; echo "<id>".$row["id"]."</id>\n"; echo "<startdate>".$row["startdate"]."</startdate>\n"; echo "<startlanguage>".$row["startlanguage"]."</startlanguage>\n"; // echo "<anylabel>".$row["1234X56X789"]."</anylabel>\n"; echo "</item>\n"; } } else { echo "something is happening here but you don't know what it is"; } echo "</answers>"; // Close db connection $conn->close(); ?>
-
Hello everyone,
FYI: We ended up using https://www.encuesta.biz/producto/limesurvey-plugin-google-sheets-connector/.
The guys are super responsive and very supportive.
It works like a charm.