Skip to content

Commit dfdb635

Browse files
author
Eric Koleda
committed
Add snippet for working with filter views.
1 parent 0ba02b5 commit dfdb635

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

sheets/snippets/spreadsheet_snippets.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,3 +309,83 @@ def conditional_formatting(self, spreadsheet_id):
309309
print('{0} cells updated.'.format(len(response.get('replies'))))
310310
# [END sheets_conditional_formatting]
311311
return response
312+
313+
def filter_views(self, spreadsheet_id):
314+
service = self.service
315+
316+
# [START filter_views]
317+
my_range = {
318+
'sheetId': 0,
319+
'startRowIndex': 0,
320+
'startColumnIndex': 0,
321+
}
322+
addFilterViewRequest = {
323+
'addFilterView': {
324+
'filter': {
325+
'title': 'Sample Filter',
326+
'range': my_range,
327+
'sortSpecs': [{
328+
'dimensionIndex': 3,
329+
'sortOrder': 'DESCENDING'
330+
}],
331+
'criteria': {
332+
0: {
333+
'hiddenValues': ['Panel']
334+
},
335+
6: {
336+
'condition': {
337+
'type': 'DATE_BEFORE',
338+
'values': {
339+
'userEnteredValue': '4/30/2016'
340+
}
341+
}
342+
}
343+
}
344+
}
345+
}
346+
}
347+
348+
body = {'requests': [addFilterViewRequest]}
349+
addFilterViewResponse = service.spreadsheets() \
350+
.batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()
351+
352+
duplicateFilterViewRequest = {
353+
'duplicateFilterView': {
354+
'filterId':
355+
addFilterViewResponse['replies'][0]['addFilterView']['filter']
356+
['filterViewId']
357+
}
358+
}
359+
360+
body = {'requests': [duplicateFilterViewRequest]}
361+
duplicateFilterViewResponse = service.spreadsheets() \
362+
.batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()
363+
364+
updateFilterViewRequest = {
365+
'updateFilterView': {
366+
'filter': {
367+
'filterViewId': duplicateFilterViewResponse['replies'][0]
368+
['duplicateFilterView']['filter']['filterViewId'],
369+
'title': 'Updated Filter',
370+
'criteria': {
371+
0: {},
372+
3: {
373+
'condition': {
374+
'type': 'NUMBER_GREATER',
375+
'values': {
376+
'userEnteredValue': '5'
377+
}
378+
}
379+
}
380+
}
381+
},
382+
'fields': {
383+
'paths': ['criteria', 'title']
384+
}
385+
}
386+
}
387+
388+
body = {'requests': [updateFilterViewRequest]}
389+
updateFilterViewResponse = service.spreadsheets() \
390+
.batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()
391+
# [END filter_views]

sheets/snippets/test_spreadsheet_snippets.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,5 +115,10 @@ def test_conditional_formatting(self):
115115
response = self.snippets.conditional_formatting(spreadsheet_id)
116116
self.assertEqual(2, len(response.get('replies')))
117117

118+
def test_filter_views(self):
119+
spreadsheet_id = self.create_test_spreadsheet()
120+
self.populate_values(spreadsheet_id)
121+
self.snippets.filter_views(spreadsheet_id)
122+
118123
if __name__ == '__main__':
119124
unittest.main()

0 commit comments

Comments
 (0)