@@ -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]
0 commit comments