Created
November 27, 2013 22:18
-
-
Save radiatoryang/7684163 to your computer and use it in GitHub Desktop.
Fetches a public Google Spreadsheet in Unity. (Doesn't work in Webplayer due to the security sandbox.)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// To prepare a Google Spreadsheet for this: | |
// make sure the spreadsheet has been published to web (FILE >> PUBLISH TO WEB), which is NOT the same as sharing to web | |
// To use in a different script: | |
// 1) include "using Google.GData.Client;" | |
// 2) include "using Google.GData.Spreadsheets;" | |
// 3) call "GDocService.GetSpreadsheet( string spreadsheetKey );", see DebugTest section for sample usage | |
using UnityEngine; | |
using System.Collections; | |
using Google.GData.Client; | |
using Google.GData.Spreadsheets; | |
// for "InsecureSecurityPolicy" class at the end | |
using System; | |
using System.Net; | |
using System.Net.Security; | |
using System.Security.Cryptography.X509Certificates; | |
public class GDocService { | |
// grab your spreadsheet's ID / "key" from the URL to access your doc... | |
// e.g. everything after "key=" in the URL: https://docs.google.com/spreadsheet/ccc?key=0Ak-N8rbAmu7WdGRFdllybTBIaU1Ic0FxYklIbk1vYlE | |
// make sure stop as soon as you hit an ampersand, those are additional URL parameters we don't need | |
public static ListFeed GetSpreadsheet (string spreadsheetID) { | |
// We need this fake certificate to trick Mono's security to use HTTPS... doesn't work in webplayer's security sandbox | |
InsecureSecurityCertificatePolicy.Instate(); | |
SpreadsheetsService service = new SpreadsheetsService( "UnityConnect" ); | |
ListQuery listQuery = new ListQuery( "https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/default/public/values" ); | |
const bool debugTest = false; // change to TRUE to enable debug output | |
if ( debugTest ) { | |
ListFeed listFeed = service.Query( listQuery ); | |
Debug.Log( "loaded Google Doc Spreadsheet: " + listFeed.Title.Text ); | |
// Iterate through each row, printing its cell values. | |
foreach ( ListEntry row in listFeed.Entries ) { | |
// Print the first column's cell value | |
Debug.Log( row.Title.Text ); | |
// Iterate over the remaining columns, and print each cell value | |
foreach ( ListEntry.Custom element in row.Elements ) { | |
Debug.Log( element.Value ); | |
} | |
} | |
} | |
return service.Query( listQuery ); | |
} | |
} | |
// from http://answers.unity3d.com/questions/249052/accessing-google-apis-in-unity.html | |
public class InsecureSecurityCertificatePolicy { | |
public static bool Validator( | |
object sender, | |
X509Certificate certificate, | |
X509Chain chain, | |
SslPolicyErrors policyErrors ) { | |
// Just accept and move on... | |
return true; | |
} | |
public static void Instate() { | |
ServicePointManager.ServerCertificateValidationCallback = Validator; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment