This is google sheets to class mapper
publicclassGameDataAsset{[GTable("ENEMIES")]// this can be ommited if GTable attribute is present of Enemy classpublicEnemy[]enemies;}[GTable("ENEMIES")]publicclassEnemy{[GColumn("NAME")]publicstringName;// This will be mapped by Enemy->Loot column using Loot's Index field[GColumn("LOOT")]publicLootLoot;}[GTable("LOOT")]publicclassLoot{[GColumn("NAME"),GIndex]publicstringName;// GConverter used for defining field-level converters. It also can be defined on Rarity Class[GColumn("RARITY"),GConverter(typeof(RarityConverter))]publicRarityRarity;}publicclassRarityConverter:IConverter<Rarity>{RarityConvert(stringvalue){returnnewRarity(value);}}DataSourceds=newDataSource("...",// api key (create here: https://console.developers.google.com/apis/credentials)"..."// spreadsheet id);EntityLoaderloader=newEntityLoader(ds);GameDataAssetasset=loader.Load(typeof(GameDataAsset));// Recursively loads fields List<Enemy>enemies=loader.Load(typeof(Enemy));// Loads all entities by classGameDataAssetinstance=newGameDataAsset();loader.LoadToInstance(instance);// Loading to existing instance