Sending data from Construct 2/3 to Google Spreadsheet

21
  • 29 favourites

Attached Files

The following files have been attached to this tutorial:

.zip
.capx

posttogooglespreadsheet.capx

Download now 172.42 KB

Stats

8,122 visits, 12,756 views

Tools

Translations

This tutorial hasn't been translated.

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Sometimes you may need to collect data from players. This could be their scores, game statistics, feedback, survey answers or anything else.

There are many ways you can transmit this data - you can send it to MySQL database, upload to Firebase, email etc. Not many people know this, but it's also possible to send it to Google Spreadsheet.

DISCLAIMER: The method described below is not secure! The data is not encrypted or protected in any way, and anyone who has the web app link can send "fake" data to your spreadsheet. So don't use it for any sensitive information!

If you have multiple Google accounts, I recommend signing off all of them except just the one you want to be associated with this spreadsheet.

1. Open Google Sheets and create a new document. Enter the name of the document, for example "High scores".

Make sure your sheet name is "Sheet1" - this is important if you are using Google Docs in a language different from English.

Add the following headers into the first row:

Select the entire third column and click Format -> Number -> Date time.

2. Click Extensions -> Apps Script to create a new Google Apps Script

Rename it to "Submit Data to Google Sheet" or something similar.

Remove all existing code, open the file script.zip attached to this tutorial, unzip it and paste its content into the code.gs window.

Save changes.

3. On the top toolbar select "setup" function in the list and then click Run to execute the setup() function.

In the Authorization Required dialog, click on Review Permissions.

If you see this warning, click "Advanced" and then select "Go to <your script name> (unsafe)".

Confirm all permissions and click "Allow".

4. Click Deploy button on top and select "New deployment".

Make sure to select "New deployment" every time! You can archive old deployments if needed.

Set "Who has access: Anyone"

In the next dialog copy the "Current web app URL", you'll need it later:

5.

Now open the CAPX project attached to this tutorial.

Paste the copied web app url into the global variable web_app_url.

Run the project and test:

Congratulations, you did it!

If you wish to send more data fields, simply add more parameters to the url and edit these lines in the script:

After making these changes in the script make sure to deploy the web app again and select "New deployment".

And finally, if you want to read the data back from the spreadsheet, please see this tutorial: Create Online Database with Google Spreadsheet.

.ZIP
.CAPX

posttogooglespreadsheet.capx

Download now 172.42 KB
  • 70 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • Hi!dop2000 Thank you for tutorial! But I get this error when press button "Cannot call method getLastRow" How I can fix it?

    EDIT: False alarm, it works! If non-english language is set in your Google Sheets, then you should rename your sheet to "Sheet1"

  • This tutorial really helps me thank you !

    But I have a question: is it possible to send a snapshot to google spreadsheet? And if it is possible, how can I proceed ?

  • Is there a possible way to do this in reverse, and request data from the sheet?

  • I cannot open the CAPX file in C3. It gives an error:

    Failed to open project. Check it is a valid Construct 2 single-file (.capx) project.

  • Hi dop2000

    How do I simply upload all the values of an array to a google spreadsheet ?

    • You can send a long string of values (an entire array if you wish) in the AJAX request, but you'll have to edit the Google Apps Script. It will need to parse that string and write all values correctly into the spreadsheet.

      • Oh! I'm afraid I haven't the faintest idea on how to do this. Could you please provide some advice about this ?

        • You can add all values from the array into a string, for example comma-separated. And send that string with AJAX request, say with "data" tag. Then you need to parse that string in the script and write each value into a new cell on the spreadsheet. It could look something like this:

          pastebin.com/raw/k03h0i09

          (Please note that I haven't tested it)

          • Thank you ! I have to admit I'm not familiar at all with this syntax and have a little trouble to understand what to do.

            Actually, my app already has an array to csv export system (this one actually howtoconstructdemos.com/export-array-data-to-csv-excel-file-format-c3p/) so maybe this string named 's' can be sent to spreadsheet.

            Two questions :

            - Does the spread sheet adapts itself to the number of lines my array has or do I have to specify it somewhere ? (my array grows and grows through time)

            - Do we have to give a name to every spreadsheet column or is it possible to refer to them in the script with their rank (starting from 0) like we do in arrays in C3 ? My array has 100 columns .

  • Load more comments (53 replies)