2016-08-11 4 views
1

Я пытаюсь выполнить пакетное обновление с API-интерфейсом google для iOS, но получаю ошибку с недопустимым значением в 'data [0] .values ​​[0]' (type.googleapis.com/google .protobuf.ListValue),Ошибка пакетного обновления Google Sheet API iOS

вот мой код

NSString *baseUrl = @"https://sheets.googleapis.com/v4/spreadsheets/"; 
NSString *spreadsheetId = @"1tJd4toWFxmHAEOeONauRPcuH_rWJOESLQT7TvCIK0x0"; 

baseUrl= [baseUrl stringByAppendingString:spreadsheetId]; 
baseUrl = [baseUrl stringByAppendingString:@"/values:batchUpdate/"]; 



NSMutableDictionary * params=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"USER_ENTERED",@"valueInputOption", nil]; 

NSURL *postURL=[GTLUtilities URLWithString:baseUrl queryParameters:params]; 

NSLog(@"base url is %@", postURL); 

GTLObject * body=[[GTLObject alloc]init]; 



NSMutableArray * titleArray=[[NSMutableArray alloc]initWithObjects:@"Customer ID",@"Customer Name",@"Latitude",@"Longitude" ,@"Last_Updated_At",nil]; 
NSMutableArray * wheelArray2=[[NSMutableArray alloc]initWithObjects:@"rt",@"SHJ",@"150.00",@"100.00",@"2:00:00", nil]; 

//[contentArray addObject:titleArray]; 



NSMutableDictionary * batchParams=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"USER_ENTERED",@"valueInputOption", nil]; 


NSMutableArray * batchParametersContentArray=[[NSMutableArray alloc]init]; 


NSMutableDictionary* batchParametersTitlesDict=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Sheet1!A1:E1",@"range",@"COLUMNS",@"majorDimension",titleArray,@"values", nil]; 


NSMutableDictionary* batchParametersContentDict=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Sheet1!A7:E7",@"range",@"ROWS",@"majorDimension",wheelArray2,@"values", nil]; 


[batchParametersContentArray addObject:batchParametersTitlesDict]; 

[batchParametersContentArray addObject:batchParametersContentDict]; 

[batchParams setObject:batchParametersContentArray forKey:@"data"]; 


NSLog(@"batch params are %@",batchParams); 


body.JSON=batchParams; 


[self.service fetchObjectByInsertingObject:body forURL:postURL completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) { 
    if (error==nil) { 
     NSLog(@"batch performed successfully"); 
    } 
    else 
    { 
     NSLog(@"error is %@", error); 
    } 

}]; 

Мои параметры запроса являются

batch params are { 
data =  (
      { 
     majorDimension = COLUMNS; 
     range = "Sheet1!A1:E1"; 
     values =    (
      "Customer ID", 
      "Customer Name", 
      Latitude, 
      Longitude, 
      "Last_Updated_At" 
     ); 
    }, 
      { 
     majorDimension = ROWS; 
     range = "Sheet1!A7:E7"; 
     values =    (
      rt, 
      SHJ, 
      "150.00", 
      "100.00", 
      "2:00:00" 
     ); 
    } 
); 
valueInputOption = "USER_ENTERED"; 
} 

ошибка

error is Error Domain=com.google.GTLJSONRPCErrorDomain Code=400 "(Invalid value at 'data[0].values[0]' (type.googleapis.com/google.protobuf.ListValue), "Customer ID" 

Недопустимое значение в 'data [0] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), "Имя клиента" Недопустимое значение в 'data [0] .values ​​[2] '(type.googleapis.com/google.protobuf.ListValue), "Локатор" Недопустимое значение в' data [0] .values ​​[3] '(type.googleapis.com/google.protobuf.ListValue), "Longitude" Недопустимое значение в 'data [0] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Недопустимое значение в 'data [1] .values ​​[0]' (type. googleapis.com/google.protobuf.ListValue), "rt" Недопустимое значение в 'data [1] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), "SHJ" Недопустимое значение в 'data [1] .values ​​[2]' (type.googleapis.com/google.protobuf.ListValue), "150.00" Недопустимое значение в 'data [1] .values ​​[3]' (type.googleapis.com/google.protobuf.ListValue), "100.00" Недопустимое значение в 'data [1] .values ​​[4]' (type. googleapis.com/google.protobuf.ListValue), "2:00:00") "UserInfo = {error = Недопустимое значение в 'data [0] .values ​​[0]' (type.googleapis.com/google.protobuf. ListValue), «Идентификатор клиента» Недопустимое значение в 'data [0] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), «Имя клиента» Недопустимое значение в 'data [0]. значения [2] '(type.googleapis.com/google.protobuf.ListValue), «Локатор» Недопустимое значение в' data [0] .values ​​[3] '(type.googleapis.com/google.protobuf.ListValue) , "Долгота" Недопустимое значение в 'data [0] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Недопустимое значение в 'data [1] .values ​​[0] '(type.googleapis.com/google.protobuf.List Значение), "rt" Недопустимое значение в 'data [1] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), "SHJ" Недопустимое значение в 'data [1] .values ​​[ 2] '(type.googleapis.com/google.protobuf.ListValue), "150.00" Недопустимое значение в' data [1] .values ​​[3] '(type.googleapis.com/google.protobuf.ListValue), " 100.00 " Недопустимое значение в 'data [1] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue)," 2:00:00 ", NSLocalizedFailureReason = (Недопустимое значение в 'data [0] .values ​​[0] '(type.googleapis.com/google.protobuf.ListValue), "Идентификатор клиента" Недопустимое значение в' data [0] .values ​​[1] '(type.googleapis.com/google.protobuf. ListValue), «Имя клиента» Недопустимое значение в 'data [0] .values ​​[2]' (type.googleapis.com/google.protobuf.ListValue), "Latitude" Недопустимое значение в 'data [0] .values [3] '(type.googleapis.com/g oogle.protobuf.ListValue), "Longitude" Недопустимое значение в 'data [0] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Недопустимое значение в 'data [1 ] .values ​​[0] '(type.googleapis.com/google.protobuf.ListValue), "rt" Недопустимое значение в' data [1] .values ​​[1] '(type.googleapis.com/google.protobuf. ListValue), "SHJ" Недопустимое значение в 'data [1] .values ​​[2]' (type.googleapis.com/google.protobuf.ListValue), "150.00" Недопустимое значение в 'data [1] .values ​​[ 3] '(type.googleapis.com/google.protobuf.ListValue), "100.00" Недопустимое значение в' data [1] .values ​​[4] '(type.googleapis.com/google.protobuf.ListValue), " 2:00:00 "), GTLStructuredError = GTLErrorObject 0x7f89ca465990: {code: 400 сообщение:" Недопустимое значение в 'data [0] .values ​​[0]' (type.googleapis.com/google.protobuf.ListValue), «Идентификатор клиента» Недопустимое значение в 'data [0] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), «Имя клиента» Недопустимое значение в 'data [0]. значения [2] '(type.googleapis.com/google.protobuf.ListValue), «Локатор» Недопустимое значение в' data [0] .values ​​[3] '(type.googleapis.com/google.protobuf.ListValue) , "Долгота" Недопустимое значение в 'data [0] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Недопустимое значение в 'data [1] .values ​​[0] '(type.googleapis.com/google.protobuf.ListValue), "rt" Недопустимое значение в' data [1] .values ​​[1] '(type.googleapis.com/google.protobuf.ListValue), "SHJ" Недопустимое значение в 'data [1] .values ​​[2]' (type.googleapis.com/google.protobuf.ListValue), "150.00" Недопустимое значение в 'data [1] .values ​​[3]' (t ype.googleapis.com/google.protobuf.ListValue), "100.00" Недопустимое значение в 'data [1] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue), "2:00: 00 "" ошибки?: [1] статус?: "INVALID_ARGUMENT"}}

ответ

6

Значения предназначены для 2-мерного массива. Они должны быть в форме [['a', 'b', 'c'], [1, 2, 3]]

Вы передаете значения в виде 1d массива ['a', 'b', 'c'], и сообщение об ошибке жалуется, что 'a' не может вписаться в ListValue, поскольку это не массив. Решение состоит в том, чтобы использовать массив 2d, хотя я не могу привести здесь пример того, что вы должны делать, так как я не уверен, как вы намереваетесь внести свой вклад в электронную таблицу.

+0

Я просто создал 2D массив, { данных = ( ( "идентификатор клиента", "Customer Name", Широта, Долгота , "Last_Updated_At" ), ( к.т., SHJ, "150,00", "100,00", "2:00:00" ) ); valueInputOption = "USER_ENTERED"; } Недопустимое значение в 'data [0]' (type.googleapis.com/google.apps.sheets.v4.ValueRange), «Идентификатор клиента» –

+0

Поле данных не является 2d-массивом, каждое поле значений. Поле данных было правильным, как и раньше. –

+0

{данных = ({ majorDimension = РЯДЫ; диапазон = "Лист1 A7: E7"; значения = ( ( "ID клиента", "Имя клиента", Широта, долготе, "Last_Updated_At" ), ( к.т., SHJ, "150,00", "100,00", "2:00:00" ));}); valueInputOption = "USER_ENTERED"; } –

-1

Ошибка указывает, что параметр запроса имеет недопустимое значение, а ответ об ошибке содержит информацию о том, какое значение было недопустимым. Не повторите попытку, не исправляя проблему. Необходимо указать допустимое значение для параметра, указанного в ответе об ошибке. Вам нужно внести изменения в запрос API, чтобы он работал. Значение вашего Customer Name, Latitude, Longitude недействительно. Проверьте журнал ошибок.

Вот Sheets API BatchUpdate блог столкнулись 400 ошибочный ответ: https://github.com/google/google-api-nodejs-client/issues/588

 Смежные вопросы

  • Нет связанных вопросов^_^