IEnumerator ImportFromGoogleIE(DataboxObject database, DataboxGoogleSheetDownloader.ImportType _importType) { DataboxCSVConverter.firstTimeReplace = true; for (int i = 0; i < database.googleWorksheets.Count; i++) { var _url = database.googleSheetUrl; _url = FixURL(_url, database.googleWorksheets[i].id); UnityWebRequest _download = UnityWebRequest.Get(_url); yield return(_download.SendWebRequest()); while (_download.isDone == false) { yield return(null); } // handle an unknown internet error if (_download.isNetworkError || _download.isHttpError) { Debug.LogWarningFormat("Couldn't retrieve file at <{0}> and error message was: {1}", _download.url, _download.error); } else { // make sure the fetched file isn't just a Google login page if (_download.downloadHandler.text.Contains("google-site-verification")) { Debug.LogWarningFormat("Couldn't retrieve file at <{0}> because the Google Doc didn't have public link sharing enabled", _download.url); continue; } List <DataboxCSVConverter.Entry> entries = new List <DataboxCSVConverter.Entry>(); DataboxCSVConverter.ConvertCSV(_download.downloadHandler.text, out entries); yield return(new WaitForSeconds(1f)); switch (_importType) { case DataboxGoogleSheetDownloader.ImportType.Append: DataboxCSVConverter.AppendToDB(database, database.googleWorksheets[i].name, entries); break; case DataboxGoogleSheetDownloader.ImportType.Replace: DataboxCSVConverter.ReplaceDB(database, database.googleWorksheets[i].name, entries); break; } } _download.Dispose(); } if (database.OnImportFromGoogleComplete != null) { database.OnImportFromGoogleComplete(); } }
/// <summary> /// Import google sheet runtime coroutine /// </summary> /// <param name="database"></param> /// <param name="_importType"></param> /// <returns></returns> public void ImportFromGoogle(DataboxObject _database, DataboxGoogleSheetDownloader.ImportType _importType) { StartCoroutine(ImportFromGoogleIE(_database, _importType)); }