The child layout in a ScrollView, needs to be larger than the scrollview if t is going to scroll. It also needs to be a fixed size( in the x or y direction).
Imagine the scrollview is a window cut in a piece of paper with a larger piece of paper behind it. If the paper behind is too small, it will not scroll. If the paper behind is sized with hints it fits in the window and doesn't move. The size needs to be
fixed.
In this case you have one line to add to your code, you need to set the height of the GridLayout contained in the ScrollView.
You do that by setting height: self.minimum_height
self.minium_height gets calculated by the layout, it is the height required to contain the children in the layout.
ScrollView
id: scroll
name: 'scroll'
size_hint: .333,1
scroll_type: ['bars','content']
do_scroll_x: False
do_scroll_y: True
scroll_y: 1 #top of scrollview
bar_color: 1,0,0,1 #red
bar_width: 15
GridLayout:
#orientation: 'vertical'
id: scrollbox
name: 'scrollbox'
cols: 1
spacing: 1
size_hint_y: None
height: self.minimum_height # set the height