public void GetSheetUrlBySheetId() { var expected = $"https://docs.google.com/spreadsheets/d/{sheetID}/edit"; var actual = GoogleSpreadSheetHelper.GetSheetUrl(sheetID); Assert.AreEqual(expected, actual); }
public void ConvertR1C1ToRangeAAA1() { var actual = GoogleSpreadSheetHelper.ConvertR1C1ToA1(1, 27 + (int)Math.Pow(27, 2)); var expected = "AAA1"; Assert.AreEqual(expected, actual); }
public void ConvertR1C1ToRangeA1() { var actual = GoogleSpreadSheetHelper.ConvertR1C1ToA1(1, 1); var expected = "A1"; Assert.AreEqual(expected, actual); }
public void GetSheetUrlBySheetIdAndGIDAndRange() { var expected = $"https://docs.google.com/spreadsheets/d/{sheetID}/edit#gid=0&range=A1"; var actual = GoogleSpreadSheetHelper.GetSheetUrl(sheetID, 0.ToString(), "A1"); Assert.AreEqual(expected, actual); }
public void ConvertR1C1ToRangeAZY1() { var cycle = 27; var actual = GoogleSpreadSheetHelper.ConvertR1C1ToA1(1, ((int)Math.Pow(cycle, 2)) + ((int)Math.Pow(cycle, 2) - cycle) + (cycle - 2)); var expected = "AZY1"; Assert.AreEqual(expected, actual); }
public void ConvertR1C1ToRangeAZ1() { var cycle = 27; var actual = GoogleSpreadSheetHelper.ConvertR1C1ToA1(1, cycle + (cycle - 1)); var expected = "AZ1"; Assert.AreEqual(expected, actual); }
private void AddErrorLogScrollViewContent(ValidationResult result, MasterBuilderEditorWindowConfig config, Dictionary <string, Dictionary <string, string> > sheetNameDictionary) { var button = new Button(); button.Add(new Label(result.Message)); button.clicked += () => { var tableProperties = sheetNameDictionary[result.Location.TableName]; var tableGID = tableProperties["SheetId"]; var url = (result.Location.LocationType == RecordLocationType.SingleRecord) ? GoogleSpreadSheetHelper.GetSheetUrl(config.spreadsheetID, tableGID) : GoogleSpreadSheetHelper.GetSheetUrl(config.spreadsheetID, tableGID, $"{result.Location.DataIndex + 1 + 1}:{result.Location.DataIndex + 1 + 1}"); // +1 is adjust origin(0 or 1), + 1 is Columns Offset Application.OpenURL(url); }; ErrorLogScrollView.Add(button); }
private void OnEnable() { var configRepo = new MasterBuilderEditorWindowConfigRepository(Application.dataPath); var config = configRepo.LoadOrInitializeMasterBuilderConfig(); rootVisualElement.Add(new Label("設定")); ClassNameTextField = new TextField("設定クラス(T extends MasterBuilderConfig)"); ClassNameTextField.value = config.configClassName; rootVisualElement.Add(ClassNameTextField); SpreadSheetIDTextField = new TextField("SpreadSheetID(GoogleApps)"); SpreadSheetIDTextField.value = config.spreadsheetID; rootVisualElement.Add(SpreadSheetIDTextField); OpenSheetButton = new Button(); OpenSheetButton.Add(new Label("シートをブラウザで開く")); OpenSheetButton.clicked += () => { Application.OpenURL(GoogleSpreadSheetHelper.GetSheetUrl(SpreadSheetIDTextField.value)); }; rootVisualElement.Add(OpenSheetButton); rootVisualElement.Add(new Label("整合性チェックエラー時もローカルのマスタを上書きする")); ForceOverWriteOnValidationErrorToggle = new Toggle() { value = config.forceOverwriteOnValidationError }; rootVisualElement.Add(ForceOverWriteOnValidationErrorToggle); SaveConfigButton = new Button(); SaveConfigButton.clicked += () => { configRepo.SaveConfig(GetCurrentConfig()); }; SaveConfigButton.Add(new Label("設定保存")); rootVisualElement.Add(SaveConfigButton); rootVisualElement.Add(new Label("通信処理")); SyncButton = new Button(); SyncButton.clicked += async() => { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); var currentConfig = GetCurrentConfig(); sw.Start(); var loader = new GoogleSpreadSheetLoader(currentConfig.spreadsheetID, currentConfig.configClassName, Application.dataPath); var result = await loader.LoadAll(); ErrorLogScrollView.Clear(); var validationResults = DataValidator.ValidateTables(result.DataPool); if (validationResults.Count > 0) { Debug.LogWarning($"ValidatonError Count: {validationResults.Count}"); if (!currentConfig.forceOverwriteOnValidationError) { foreach (var validationResult in validationResults) { Debug.LogError(validationResult.Message); AddErrorLogScrollViewContent(validationResult, currentConfig, result.AvailableSheetDictionary); } sw.Stop(); Debug.LogError($"Synchronization Failured. Elapsed: {sw.ElapsedMilliseconds} ms"); return; } foreach (var validationResult in validationResults) { Debug.LogWarning(validationResult.Message); AddErrorLogScrollViewContent(validationResult, currentConfig, result.AvailableSheetDictionary); } } var fsWrapper = new MasterDataFileSystemWrapper(config.configClassName, Application.dataPath); fsWrapper.ExportAll(result.DataPool); AddAllClearScrollViewContent(); sw.Stop(); Debug.Log($"Syncronization done. Elapsed: {sw.ElapsedMilliseconds} ms"); }; SyncButton.Add(new Label("マスタ同期")); rootVisualElement.Add(SyncButton); rootVisualElement.Add(new Label("整合性チェックエラー行へのリンク")); ErrorLogScrollView = new ScrollView(); rootVisualElement.Add(ErrorLogScrollView); }