C# 寻找如何使用Google Sheets API FilterCriteria对象的示例

C# 寻找如何使用Google Sheets API FilterCriteria对象的示例,c#,.net,google-sheets-api,C#,.net,Google Sheets Api,我试图理解如何在Google Sheets API中构造一个AddFilterViewRequest。然而,在任何一种编程语言中,我似乎都找不到任何好的例子来演示如何使用它 具体地说,我试图理解FilterCriteria对象,以及我需要将hiddenValues和条件设置为什么 在我的应用程序中,我试图构造一个过滤器,它只显示我所选列中的单元格不为空的行。我可以在GoogleSheets编辑器中手动执行此操作,我希望在我的程序中复制相同的设置 这是目前的代码 Request request =

我试图理解如何在Google Sheets API中构造一个
AddFilterViewRequest
。然而,在任何一种编程语言中,我似乎都找不到任何好的例子来演示如何使用它

具体地说,我试图理解
FilterCriteria
对象,以及我需要将
hiddenValues
条件设置为什么

在我的应用程序中,我试图构造一个过滤器,它只显示我所选列中的单元格不为空的行。我可以在GoogleSheets编辑器中手动执行此操作,我希望在我的程序中复制相同的设置

这是目前的代码

Request request = new Request();
request.AddFilterView = new AddFilterViewRequest();
request.AddFilterView.Filter = new FilterView();
request.AddFilterView.Filter.FilterViewId = 0;
request.AddFilterView.Filter.Title = "Hide rows with errors";
request.AddFilterView.Filter.Range = new GridRange();
request.AddFilterView.Filter.Range.SheetId = 0;
request.AddFilterView.Filter.Range.StartColumnIndex = 8;
request.AddFilterView.Filter.Range.EndColumnIndex = 9;
FilterCriteria criteria = new FilterCriteria();
//criteria.Condition = BooleanCondition;
criteria.HiddenValues = new List<string>();
//criteria.HiddenValues.Add("item");
IDictionary<string, FilterCriteria> criteriaDictionary = new Dictionary<string, FilterCriteria>();
//criteriaDictionary.Add("string", criteria);
request.AddFilterView.Filter.Criteria = criteriaDictionary;
Request-Request=新请求();
request.AddFilterView=新的AddFilterViewRequest();
request.AddFilterView.Filter=new FilterView();
request.AddFilterView.Filter.FilterWebId=0;
request.AddFilterView.Filter.Title=“隐藏有错误的行”;
request.AddFilterView.Filter.Range=新的GridRange();
request.AddFilterView.Filter.Range.SheetId=0;
request.AddFilterView.Filter.Range.StartColumnIndex=8;
request.AddFilterView.Filter.Range.EndColumnIndex=9;
FilterCriteria准则=新的FilterCriteria();
//条件=布尔条件;
criteria.HiddenValues=新列表();
//标准。隐藏值。添加(“项目”);
IDictionary criteriaDictionary=新字典();
//添加(“字符串”,标准);
request.AddFilterView.Filter.Criteria=criteriaDictionary;

目前被注释掉的行是我可以寻求帮助的行。我还试图找出
标准字典的
字符串
变量应该是什么

我现在没有一个很好的设置来在这里构造合适的代码(也许其他人可以修改这个或添加一个内联代码的答案),但总的来说,现在是你找到“正确方法”的最佳选择要在API中构造这样的复杂对象,需要使用UI创建一个对象,然后执行spreadsheets.get调用。您可以查看生成的对象并模拟FilterView(根据需要进行修改)。

发布此问题后,我意识到我可以自己回答的一种方法是对已应用此过滤器的现有电子表格进行反向工程。基于此,我现在有以下工作代码

FilterCriteria criteria = new FilterCriteria();
criteria.Condition = new BooleanCondition();
criteria.Condition.Type = "NOT_BLANK";

IDictionary<string, FilterCriteria> criteriaDictionary = new Dictionary<string, FilterCriteria>();
criteriaDictionary.Add("8", criteria);

Request request = new Request();
request.AddFilterView = new AddFilterViewRequest();
request.AddFilterView.Filter = new FilterView();
request.AddFilterView.Filter.FilterViewId = 0;
request.AddFilterView.Filter.Title = "Hide rows with errors";
request.AddFilterView.Filter.Range = range1;
request.AddFilterView.Filter.Criteria = criteriaDictionary;
requests.Add(request);
FilterCriteria准则=新的FilterCriteria();
criteria.Condition=新的布尔条件();
criteria.Condition.Type=“不为空”;
IDictionary criteriaDictionary=新字典();
标准字典。添加(“8”,标准);
请求=新请求();
request.AddFilterView=新的AddFilterViewRequest();
request.AddFilterView.Filter=new FilterView();
request.AddFilterView.Filter.FilterWebId=0;
request.AddFilterView.Filter.Title=“隐藏有错误的行”;
request.AddFilterView.Filter.Range=range1;
request.AddFilterView.Filter.Criteria=criteriaDictionary;
请求。添加(请求);

我不知道为什么他们的键值被设置为8,但这就是现有电子表格中的键值(该工作表中只有一个过滤器视图)。不管怎样,我复制了它,它可以工作,所以我没有必要更改它。

谢谢。这正是我最终要做的。我相信“8”是筛选条件适用于的列的索引。没错,它确实是电子表格中的第8列。如果我想在其他地方重用此代码,这些信息非常有用。谢谢。@IanB888您是否碰巧构建了实际的JSON结构?我正在使用python,希望在我的excel工作表标题中添加一个过滤器。谢谢大家!@mongotop因为我使用Google Sheets API库用C#编写,所以生成的JSON结构对我来说是隐藏的。如果我有时间,我可以捕获来自应用程序的网络流量,这将允许我查看库生成的JSON是什么样子。我的代码已经投入生产大约6个月了,而且运行得很好。@IanB888非常感谢您!如果您能从网络流量中获得JSON结构,我将不胜感激。