【问题标题】:Looking for examples how to use the Google Sheets API FilterCriteria object寻找如何使用 Google Sheets API FilterCriteria 对象的示例
【发布时间】:2016-06-29 23:07:09
【问题描述】:

我正在尝试了解如何在 Google Sheets API 中构造 AddFilterViewRequest。但是,我似乎找不到任何可以在任何编程语言中找到的很好的例子来演示它是如何使用的。

具体来说,我想了解FilterCriteria 对象,以及我需要将hiddenValuescondition 设置为什么。

在我的应用程序中,我试图构建一个过滤器,它只显示我选择的列中的单元格不为空的行。我可以在 Google 表格编辑器中手动执行此操作,并且我想在我的程序中复制相同的设置。

这是目前的代码...

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;

目前被注释掉的行是我可以寻求帮助的行。我还试图找出string 变量对于criteriaDictionary 应该是什么。

【问题讨论】:

    标签: c# .net google-sheets-api


    【解决方案1】:

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

    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);
    

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

    【讨论】:

    • 我相信“8”是过滤条件适用的列的索引。
    • 没错,确实是电子表格中的第 8 列。如果我想在其他地方重用此代码,那将是有用的信息。谢谢。
    • @IanB888 你是否碰巧构建了实际的 JSON 结构?我正在使用 python 并想在我的 excel 表标题中添加一个过滤器。谢谢!
    • @mongotop 因为我使用 Google Sheets API 库在 C# 中对此进行编码,所以生成的 JSON 结构对我来说是隐藏的。如果我有时间,我可以捕获来自应用程序的网络流量,这将允许我查看库生成的 JSON 的样子。我的代码已经投入生产大约 6 个月了,并且运行良好。
    • @IanB888 非常感谢!如果您能从网络流量中获取 JSON 结构,我将不胜感激。
    【解决方案2】:

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

    【讨论】:

    • 谢谢。这正是我最终所做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多