2017-06-06 94 views
1

交替顏色在Python中使用工作表API我試圖使用交替顏色格式化工作表。在用戶界面中,可以在格式>交替顏色中找到...谷歌表通過API

從我已經能夠通過API使用banding找到它。不幸的是,我一直無法找到如何完成這個工作的實例。下面是我構建的數值字典,顏色值此刻並不重要,我只是想讓它着色表單。

requests = { 
    'bandedRange': { 
    'bandedRangeId': 1, 
    'range': { 
     'sheetId': 0, 
     'startRowIndex': 0, 
     'endRowIndex': len(values), 
     'startColumnIndex': 0, 
     'endColumnIndex': 4, 
    }, 
    'rowProperties': { 
     'headerColor': { 
     'red': 1, 
     'green': 0, 
     'blue': 1, 
     'alpha': 1, 
     }, 
     'firstBandColor': { 
     'red': 1, 
     'green': 0, 
     'blue': 0, 
     'alpha': 0, 
     }, 
     'secondBandColor': { 
     'red': 0, 
     'green': 1, 
     'blue': 0, 
     'alpha': 0, 
     } 
    }, 
    }, 
    'fields': '*', 
} 
body = {'requests': requests} 
response = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute() 

這失敗,出現以下錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "/usr/local/lib/python2.7/dist-packages/googleapiclient/http.py", line 840, in execute 
    raise HttpError(resp, content, uri=self.uri) 
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://sheets.googleapis.com/v4/spreadsheets/$spreadsheet_id:batchUpdate?alt=json returned "Invalid JSON payload received. Unknown name "banded_range" at 'requests': Cannot find field."> 

我相當肯定我的問題是場價值,但我不能找到在這裏用什麼有效的例子。如果我完全忽略字段鍵,我會得到同樣的錯誤。

回答

1

根據參考文檔batchUpdaterequests獲取一組Request對象。每個Request必須只有一個字段集,綁紮作爲可用字段:

"updateBanding": { 
    object(UpdateBandingRequest) 
    }, 
    "addBanding": { 
    object(AddBandingRequest) 
    }, 
    "deleteBanding": { 
    object(DeleteBandingRequest) 
    }, 

沒有現場bandedRange,這是你想設置什麼。這就是錯誤信息(Unknown name "banded_range" at 'requests': Cannot find field.)在說......雖然我不知道爲什麼它將bandedRange轉換爲snake_case。

根據是否要添加或更新帶狀範圍,您可以將updateBanding設置爲UpdateBandingRequest對象,或者將addBanding設置爲AddBandingRequest對象。

通過將addBanding添加到您的JSON格式。如上所述,您將最終創建下面的JSON。另外,密鑰fields是可選的。

{'addBanding': { 
     'bandedRange': { 
     'bandedRangeId': 1, 
     'range': { 
      'sheetId': 0, 
      'startRowIndex': 0, 
      'endRowIndex': len(values), 
      'startColumnIndex': 0, 
      'endColumnIndex': 4, 
     }, 
     'rowProperties': { 
      'headerColor': { 
      'red': 1, 
      'green': 0, 
      'blue': 1, 
      'alpha': 1, 
      }, 
      'firstBandColor': { 
      'red': 1, 
      'green': 0, 
      'blue': 0, 
      'alpha': 0, 
      }, 
      'secondBandColor': { 
      'red': 0, 
      'green': 1, 
      'blue': 0, 
      'alpha': 0, 
      } 
     }, 
     }, 
    }, 
    },