Вы можете написать скрипт так, чтобы он работал в обоих окружениях без изменений. Трюк в том, чтобы проверить, доступен ли объект context:

from seatable_api import Base

try:
    from seatable_api import context
    base = Base(context.api_token, context.server_url)
except:
    base = Base('your-api-token', 'https://cloud.seatable.io')

base.auth()

Полный список всех предустановленных библиотек находится в статье Поддерживаемые библиотеки Python . Там же вы узнаете, как добавить собственные библиотеки на самостоятельно размещённом сервере.

Метод base.list_rows() по умолчанию возвращает максимум 1 000 строк. Для обработки большего количества строк используйте один из этих подходов:

Вариант 1: Цикл с offset

all_rows = []
offset = 0
while True:
    rows = base.list_rows(TABLE_NAME, start=offset, limit=1000)
    if not rows:
        break
    all_rows.extend(rows)
    offset += 1000

Вариант 2: SQL-запрос

rows = base.query("SELECT * FROM `Table1` LIMIT 10000")

SQL-запросы поддерживают до 10 000 строк за один запрос.

Используйте json.dumps() с отступами для форматированного вывода словарей и списков:

import json
metadata = base.get_metadata()
print(json.dumps(metadata, indent=2))

Полный справочник функций доступен в SeaTable Developer Manual .