在 Python 的 google spreadsheet api v4 中获取工作表列表和最新工作表

新手上路,请多包涵

我正在尝试按照 google 官方文档 在 python 3 中读取和写入不同工作表的值。尽管我能够使用 rangeName = 'Class Data!A2:E' 中的范围属性从某些工作表中读取值,但在下面提到的代码块中:

 discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
                    'version=v4')
    service = discovery.build('sheets', 'v4', http=http,
                              discoveryServiceUrl=discoveryUrl)

    spreadsheetId = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
    rangeName = 'Class Data!A2:E'
    result = service.spreadsheets().values().get(
        spreadsheetId=spreadsheetId, range=rangeName).execute()
    values = result.get('values', [])

我正在尝试使用 此处的示例代码 编写值:

 requests.append({
    'updateCells': {
        'start': {'sheetId': 0, 'rowIndex': 0, 'columnIndex': 0},
        'rows': [
            {
                'values': [
                    {
                        'userEnteredValue': {'numberValue': 1},
                        'userEnteredFormat': {'backgroundColor': {'red': 1}}
                    }, {
                        'userEnteredValue': {'numberValue': 2},
                        'userEnteredFormat': {'backgroundColor': {'blue': 1}}
                    }, {
                        'userEnteredValue': {'numberValue': 3},
                        'userEnteredFormat': {'backgroundColor': {'green': 1}}
                    }
                ]
            }
        ],
        'fields': 'userEnteredValue,userEnteredFormat.backgroundColor'
    }
})
batchUpdateRequest = {'requests': requests}

service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id,
                                    body=batchUpdateRequest).execute()

我面临的问题是我无法从官方文档中保留最新的工作表名称或 ID,并且最新的 api 修订版正在制作随机 gid(我们可能不知道工作表 gid 是什么)。有什么方法可以使用 google sheet api v4 来引用工作表列表或电子表格最新修订的工作表名称或 ID?

原文由 nexuscreator 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 770
2 个回答

您可以使用电子表格上的“获取”方法获取工作表列表:

 sheet_metadata = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute()
sheets = sheet_metadata.get('sheets', '')
title = sheets[0].get("properties", {}).get("title", "Sheet1")
sheet_id = sheets[0].get("properties", {}).get("sheetId", 0)

原文由 user4426017 发布,翻译遵循 CC BY-SA 3.0 许可协议

还没有人在 SO 上为 PHP 库询问过这个问题,但我只是想在这里添加这个答案,因为这是相关问题的第一个谷歌结果。

 <?php

$sheets = array();

// ... load library and set up client ...
$service = new Google_Service_Sheets($client);

$response = $service->spreadsheets->get($spreadsheetId);
foreach($response->getSheets() as $s) {
    $sheets[] = $s['properties']['title'];
}

return $sheets;

?>

原文由 WOUNDEDStevenJones 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏