Any way to force datatable view to move to a specific column?

@Martin_Guthrie That is an enormous example, and has what I would consider non-standard usage (that is also extraneous and unrelated to the actual question at all). It’s well beyond my time budget to go through. Here is a minimal example that scrolls a table on programmatic selection that will hopefully point you in a good direction:

from bokeh.io import show
from bokeh.layouts import column
from bokeh.models import Button, CustomJS, ColumnDataSource, DataTable, TableColumn

x = list(range(1000))
y = list(range(1000, 2000))

source = ColumnDataSource(data=dict(x=x, y=y))

columns = [TableColumn(field="x", title="x"),
           TableColumn(field="y", title="y")]

data_table = DataTable(source=source, columns=columns)

button = Button()
button.js_on_click(CustomJS(args=dict(source=source), code="""
    source.selected.indices = [800]
"""))

show(column(button, data_table))

I have tried calling a SlickGrid method on dozens of objects in the source/cb_obj in the callback code

The SlickGrid instance is on the Bokeh view, not the model. You would need to sift through the global Bokeh.index (index of views) to find the Bokeh view object for the DataTable, then it is is the grid property of that (Bokeh) table view.

How do I find all the other available methods?

Right now, you look through the source code on GitHub. For a long time, BokehJS was a purely implementation detail. Over time, some small parts and common use cases are now included in some documentation and examples. Those are “supported”. Any other BokehJS usage must be considered advanced / experimental at this point. I’d love to raise BokehJS to a proper independent and well-documented library in its own right. It’s only recently that BokehJS has reached a level of stability where that could even be considered. But regardless, it’s also some amount of work with very limited resources currently. It can happen much faster if some new contributors decided they want to pitch in.