求助:如何通过Google Sheets API为BigQuery数据源设置定时刷新
设置Google Sheets BigQuery数据源定时刷新的Python实现
核心方法说明
你需要调用Google Sheets API的spreadsheets.batchUpdate方法,在请求体中添加UpdateDataSourceRefreshScheduleRequest配置来实现定时刷新。
具体代码示例
假设你已通过授权创建了Sheets服务对象service,以下是添加定时刷新的代码片段:
def set_data_source_refresh_schedule(spreadsheet_id, data_source_id): request_body = { "requests": [ { "updateDataSourceRefreshSchedule": { "dataSourceId": data_source_id, "refreshSchedule": { "schedule": { # 示例:每日凌晨2点(上海时区)刷新 "dailySchedule": { "hour": 2, "timeZone": "Asia/Shanghai" } }, "refreshScope": "DATA_SOURCE", "isEnabled": True }, "fields": "*" } } ] } response = service.spreadsheets().batchUpdate( spreadsheetId=spreadsheet_id, body=request_body ).execute() return response
关键参数解释
dataSourceId: 你之前添加BigQuery数据源时返回的ID,可通过spreadsheets.get接口查询dataSources字段获取。schedule: 支持三种类型:dailySchedule: 配置固定小时数的每日刷新weeklySchedule: 指定每周某几天的固定时间刷新customSchedule: 使用CRON表达式自定义刷新规则(需符合Google Sheets支持的格式)
refreshScope: 固定设为DATA_SOURCE,代表刷新整个数据源isEnabled: 设为True启用定时刷新,False则禁用
注意事项
- 确保授权账号拥有
https://www.googleapis.com/auth/spreadsheets权限 - CRON表达式需遵循Google Sheets的语法规范,比如
0 2 * * *代表每日UTC时间2点刷新 - 调用前务必确认
dataSourceId的正确性,否则会返回数据源不存在的错误
内容的提问来源于stack exchange,提问作者Peter Jančok
相关产品推荐
相关产品推荐

