2016-08-08 59 views
1

我試圖在規則是使用Google Sheets API的範圍之一實現數據驗證。Google Sheets API中的範圍規則之一的數據驗證

在sheet1中,我有一個主列表,其中一列需要在其中一個值中。可能的下拉列表值位於一個稱爲下拉列表的單獨表格中。

我的one_of_range的條件值有什麼錯誤?

dropdown_action = { 
'setDataValidation':{ 
    'range':{ 

     'startRowIndex':1, 
     'startColumnIndex':4, 
     'endColumnIndex':5 
    }, 
    'rule':{ 
     'condition':{ 
      'type':'ONE_OF_RANGE', 
      'values': [ 
       { "userEnteredValue" : "dropdown!A1:B2" 
       } 
      ], 
     }, 
     'inputMessage' : 'Choose one from dropdown', 
     'strict':True, 
     'showCustomUi': True 
    } 

} 
} 

request = [dropdown_action] 
batchUpdateRequest = {'requests': request} 
SHEETS.spreadsheets().batchUpdate(spreadsheetId = id, 
          body = batchUpdateRequest).execute() 

但是,我遇到了http錯誤。如果我選擇列表中的一個,而不是one_of_range,我可以使其工作。但我更喜歡使用one_of_range,以便我可以在同一電子表格中保留可能的值。

HttpError 400請求https://sheets.googleapis.com/v4/spreadsheets/id:batchUpdate?alt=json時返回 「無效的請求[1] .setDataValidation:無效ConditionValue.userEnteredValue:下拉A1:B2」>

+0

[錯誤](https://developers.google.com/drive/v3/web/handle-errors#400_bad_request)意味着未提供必填字段或參數。確保提供的值有效,或提供的字段組合有效。這也可能是因爲[請求格式錯誤](http://stackoverflow.com/questions/19671317/400-bad-request-http-error-code-meaning)。換句話說,客戶端發送到服務器的數據流並不遵循規則。選中此鏈接(http://stackoverflow.com/questions/37893515/google-spreadsheet-api-400-error-bad-request-unable-to-parse-range)。 – abielita

+0

是的,我認爲錯誤來自規則條件類型和值的組合。我將代碼更改爲'type':'ONE_OF_LIST', 'values':[ {「userEnteredValue」:「A1:B2」 } ]。它的工作原理。但我仍然想知道one_of_range的正確組合是什麼類型。 –

+0

如果您在表格名稱前加'=',例如'「= dropdown!A1:B2」',它會起作用嗎? –

回答

1

如薩姆柏林建議的,解決的辦法是在添加 '='範圍。

「= dropdown!A1:B2」將使用one_in_range數據驗證規則。