Проблема с пакетным обновлением Google Sheet API iOS

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

вот мой код

 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"

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


person Syed Ismail Ahamed    schedule 11.08.2016    source источник


Ответы (2)


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

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

person Sam Berlin    schedule 11.08.2016
comment
Поле данных не является 2-мерным массивом, каждое поле значений. Поле данных было правильным, как и раньше. - person Syed Ismail Ahamed; 11.08.2016
comment
{data = ({majorDimension = ROWS; range = Sheet1! A7: E7; values ​​= ((Идентификатор клиента, Имя клиента, Широта, Долгота, Last_Updated_At), (rt, SHJ, 150.00, 100.00, 2:00:00)) ;}); valueInputOption = USER_ENTERED; } - person Sam Berlin; 12.08.2016
comment
сбой с ошибкой Error Domain = com.google.GTLJSONRPCErrorDomain Code = 400 (Недействительные данные [0]: запрошена запись в диапазоне [Sheet1! A7: E7], но попытка записи в строку [8]) - person Syed Ismail Ahamed; 12.08.2016
comment
Тогда это ваша новая проблема. Вы просили записать только в строку 7, но включили данные, которые расширили бы запись до строки 8. Вы можете либо изменить запрошенный диапазон, чтобы он был больше, либо удалить данные, чтобы записывалась только одна строка. - person Syed Ismail Ahamed; 13.08.2016
comment
Недопустимое значение в '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), "Долгота" Недопустимое значение в '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), "Customer ID" Недействительное значение e в 'data [0] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), "Customer Name" Недопустимое значение в 'data [0] .values ​​[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]' (type.googleapis.com/google.protobuf.ListValue), "100.00" Недопустимое значение at 'data [1] .values ​​[4]' (type.googleapis.com/google.protobuf.ListValue), "2:00:00", NSLocalizedFailureReason = (Недействительное значение в 'data [0] .values ​​[0] '(type.googleapis.com/google.protobuf.ListValue), "Идентификатор клиента" Недействительное значение a t 'data [0] .values ​​[1]' (type.googleapis.com/google.protobuf.ListValue), "Customer Name" Недопустимое значение в 'data [0] .values ​​[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] '(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 message:" Недопустимое значение в '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), "Широта" Недействительное значение в '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]' (type.googleapis.com/google.protobuf.ListValue)», «100.00» Недопустимое значение в 'data [1] .values ​​[4]' (type.googleapis .com / google.protobuf.ListValue), "2:00:00" "ошибки?: [1] статус?:" INVALID_ARGUMENT "}} - person Sam Berlin; 13.08.2016

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

Я только что создал 2D-массив {data = ((Идентификатор клиента, Имя клиента, Широта, Долгота, Last_Updated_At), (rt, SHJ, 150.00, 100.00, 2:00:00)); valueInputOption = USER_ENTERED; } Недействительное значение в 'data [0]' (type.googleapis.com/google.apps.sheets.v4.ValueRange), идентификатор клиента.

person Android Enthusiast    schedule 12.08.2016