tutorial sheets sheet google example ios google-api google-api-client google-sheets-api

ios - sheets - google spreadsheet api android



Problema de actualización por lotes de Google Sheet API iOS (2)

Estoy tratando de hacer una actualización por lotes con la API de hoja de google para iOS, pero obtengo un valor inválido de error en ''data [0] .values ​​[0]'' (type.googleapis.com/google.protobuf.ListValue),

aquí está mi código

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); } }];

Mis parámetros de solicitud son

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"; }

El error es

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

El valor no es válido en ''data [0] .values ​​[1]'' (type.googleapis.com/google.protobuf.ListValue), "Customer Name" Valor no válido en ''data [0] .values ​​[2]'' (type.googleapis) .com / google.protobuf.ListValue), "Latitude" Valor no válido en ''data [0] .values ​​[3]'' (type.googleapis.com/google.protobuf.ListValue), "Longitude" Valor no válido en ''data [ 0] .values ​​[4] ''(type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Valor no válido en'' data [1] .values ​​[0] ''(type.googleapis.com/google.protobuf. ListValue), "rt" Valor no válido en ''data [1] .values ​​[1]'' (type.googleapis.com/google.protobuf.ListValue), "SHJ" Valor no válido en ''data [1] .values ​​[2] ''(type.googleapis.com/google.protobuf.ListValue), "150.00" Valor no válido en'' data [1] .values ​​[3] ''(type.googleapis.com/google.protobuf.ListValue), "100.00" Inválido value at ''data [1] .values ​​[4]'' (type.googleapis.com/google.protobuf.ListValue), "2:00:00") "UserInfo = {error = Valor no válido en ''data [0]. valores [0] ''(type.googleapis.com/google.protobuf.ListValue), "ID de cliente" Valor no válido e en ''data [0] .values ​​[1]'' (type.googleapis.com/google.protobuf.ListValue), "Nombre del cliente" Valor no válido en ''data [0] .values ​​[2]'' (type.googleapis. com / google.protobuf.ListValue), "Latitude" Valor no válido en ''data [0] .values ​​[3]'' (type.googleapis.com/google.protobuf.ListValue), "Longitude" Valor no válido en ''data [0 ] .values ​​[4] ''(type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Valor no válido en'' data [1] .values ​​[0] ''(type.googleapis.com/google.protobuf.ListValue ), "rt" Valor no válido en "data [1] .values ​​[1]" (type.googleapis.com/google.protobuf.ListValue), "SHJ" Valor no válido en "data [1] .values ​​[2]" (type.googleapis.com/google.protobuf.ListValue), "150.00" Valor no válido en ''data [1] .values ​​[3]'' (type.googleapis.com/google.protobuf.ListValue), "100.00" Valor no válido en ''data [1] .values ​​[4]'' (type.googleapis.com/google.protobuf.ListValue), "2:00:00", NSLocalizedFailureReason = (Valor no válido en ''data [0] .values ​​[0] ''(type.googleapis.com/google.protobuf.ListValue), "ID de cliente" Valor no válido a t ''data [0] .values ​​[1]'' (type.googleapis.com/google.protobuf.ListValue), "Customer Name" Valor no válido en ''data [0] .values ​​[2]'' (type.googleapis.com /google.protobuf.ListValue), "Latitude" Valor no válido en ''data [0] .values ​​[3]'' (type.googleapis.com/google.protobuf.ListValue), "Longitude" Valor no válido en ''data [0] .values ​​[4] ''(type.googleapis.com/google.protobuf.ListValue), "Last_Updated_At" Valor no válido en'' data [1] .values ​​[0] ''(type.googleapis.com/google.protobuf.ListValue) , "rt" Valor no válido en "data [1] .values ​​[1]" (type.googleapis.com/google.protobuf.ListValue), "SHJ" Valor no válido en "data [1] .values ​​[2]" ( type.googleapis.com/google.protobuf.ListValue), "150.00" Valor no válido en "data [1] .values ​​[3]" (type.googleapis.com/google.protobuf.ListValue), "100.00" Valor no válido en ''data [1] .values ​​[4]'' (type.googleapis.com/google.protobuf.ListValue), "2:00:00"), GTLStructuredError = GTLErrorObject 0x7f89ca465990: {código: 400 mensaje: "Valor no válido en '' data [0] .values ​​[0] ''(type.googleapis.com/google.protobuf. ListValue), "Customer ID" Valor no válido en ''data [0] .values ​​[1]'' (type.googleapis.com/google.protobuf.ListValue), "Customer Name" Valor no válido en ''data [0] .values ​​[ 2] ''(type.googleapis.com/google.protobuf.ListValue), "Latitude" Valor no válido en'' data [0] .values ​​[3] ''(type.googleapis.com/google.protobuf.ListValue), "Longitude "Valor no válido en ''data [0] .values ​​[4]'' (type.googleapis.com/google.protobuf.ListValue)," Last_Updated_At "Valor no válido en ''data [1] .values ​​[0]'' (type.googleapis) .com / google.protobuf.ListValue), "rt" Valor no válido en "data [1] .values ​​[1]" (type.googleapis.com/google.protobuf.ListValue), "SHJ" Valor no válido en "data [ 1] .values ​​[2] ''(type.googleapis.com/google.protobuf.ListValue), "150.00" Valor no válido en'' data [1] .values ​​[3] ''(type.googleapis.com/google.protobuf. ListValue), "100.00" Valor no válido en "data [1] .values ​​[4]" (type.googleapis.com/google.protobuf.ListValue), "2:00:00" "errors?: [1] status? :"ARGUMENTO NO VÁLIDO"}}


Los valores están destinados a ser una matriz 2d. Deberían tener la forma de [[''a'', ''b'', ''c''], [1, 2, 3]]

Está suministrando los valores como una matriz de 1d [''a'', ''b'', ''c''], y el mensaje de error se queja de que ''a'' no cabe en ListValue, ya que no es una matriz. La solución es usar una matriz 2d, aunque no puedo proporcionar un ejemplo aquí de exactamente lo que debe hacer, ya que no estoy seguro de cómo pretende que su entrada se asigne a la hoja de cálculo.


El error indica que un parámetro de solicitud tiene un valor no válido y la respuesta de error proporciona la información sobre qué valor no es válido. No intente de nuevo sin solucionar el problema. Debe proporcionar un valor válido para el parámetro especificado en la respuesta de error. Debe realizar cambios en la consulta API para que funcione. El valor de Customer Name, Latitude, Longitude no es válido. Verifica tu registro de errores.

Aquí hay un blog de Sheets API BatchUpdate que detectó 400 errores: https://github.com/google/google-api-nodejs-client/issues/588