@@ -0,0 +1,65 @@
// 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 ;
}
}