37

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シートAPI v4を使用して、シートまたはスプレッドシートの最新の改訂されたシート名またはIDのリストを参照する方法はありますか?

4

7 に答える 7

65

スプレッドシートで「get」メソッドを使用して、シートのリストを取得できます。

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)
于 2016-07-08T16:23:24.740 に答える