2016-08-11 16 views
1

アムは、iOS用GoogleスプレッドシートのAPIを使用してバッチ更新をやろうとしたが「データ[0] .values [0]」(type.googleapis.com/googleでエラー無効な値を取得しています.protobuf.ListValue)、ここではGoogleのシート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); 
    } 

}]; 

である私のリクエストパラメータは、エラーが

0123で

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

です0166914845494959500004326

'data [0] .values [1]'(type.googleapis.com/google.protobuf.ListValue)の値が無効です。「お客様名」 'data [0] .values [2] '(type.googleapis.com/google.protobuf.ListValue)において、 "緯度" 無効な値のデータ[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」'データ[1] .values [4]'(タイプでのデータ[1] .values [3] '(type.googleapis.com/google.protobuf.ListValue)、 "100.00" 無効値で無効値。 googleapis.com/google.protobuf.ListValue)、 "2:00:00") "UserInfo = {error = 'data [0] .values [0]'の値が無効です(type.googleapis.com/google.protobuf。 ListValue)のデータにおける 'データ[0] .values [1]'(type.googleapis.com/google.protobuf.ListValue)、 "顧客名" 無効な値で、 "顧客ID" 無効値[0]。値[2] '(type.googleapis.com/google.protobuf.ListValue)、「Latitude」 ' 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値)、[ '[1]データ[1] .values'(type.googleapis.com/google.protobuf.ListValue)、 "SHJ"「データ[1] .valuesで 値が無効で 無効値を "RT" 2] '(type.googleapis.com/google.protobuf.ListValue)、 "150.00" ' data [1] .values [3] '(type.googleapis.com/google.protobuf.ListValue)の値が無効です。 100.00" 'データ[1] .values [4]' で 無効値(type.googleapis.com/google.protobuf.ListValue)、 "2時00分00秒"、「データでNSLocalizedFailureReason =(無効値[0] .values [0] '(type.googleapis.com/google.protobuf.ListValue)、 "Customer ID" ' data [0] .values [1] 'の値が無効です(type.googleapis.com/google.protobuf。 "0" .values [2] '(type.googleapis.com/google.protobuf.ListValue)、 "Latitude"で無効な値 ' data [0] .valuesの値が無効です[3] '(type.googleapis.com/g oogle.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。 (1)。値[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: 'データ[0] .values [0]'の値が無効です(type.googleapis.com/google.protobuf。「顧客ID」 'data [0] .values [1]'(type.googleapis.com/google.protobuf.ListValue)の値が無効です。「お客様名」 'data [0]'の値が無効です。値[2] '(type.googleapis.com/google.protobuf.ListValue)、「Latitude」 ' 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]'の値が無効です「100.00」 'data [1] .values [4]'(type.googleapis.com/google.protobuf.ListValue)の値が無効です。「2:00:ype.googleapis.com/google.protobuf.ListValue」、 00 ""エラー:[1]ステータス? "INVALID_ARGUMENT"}}

答えて

6

値は2次元配列を意図しています。 [[''、 'b'、 'c']、[1,2,3]]

値を1次元配列['a' 'b'、 'c']、 'a'は配列ではないためListValueに収まらないというエラーメッセージが表示されます。解決策は2次元配列を使用することですが、スプレッドシートにどのように入力したいのか分かりませんので、ここでは何をすべきかを例に挙げることはできません。

+0

私はちょうど=( ( "顧客ID" 2次元配列、{ データ、 "顧客名"、 緯度、 経度を作成、 "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)の値が無効です。「顧客ID」 –

+0

データフィールドは2次元配列ではなく、各値フィールドは2次元配列です。前と同じようにデータフィールドは正しいです。 –

+0

{データ=({ majorDimension = ROWS; 範囲= "シート1 A7:E7"; 値=( ( "顧客ID"、 "顧客名"、 緯度、 経度、 "Last_Updated_At" )、 ( RT、 SHJ、 "150.00"、 "100.00"、 "二時00分00秒" ));}); valueInputOption = "USER_ENTERED"。 } –

-1

エラーは、要求パラメータに無効な値があり、エラー応答が無効な値に関する情報を提供していることを示します。問題を解決せずに再試行しないでください。エラー応答で指定されたパラメーターに有効な値を指定する必要があります。 APIクエリが機能するには、APIクエリを変更する必要があります。 Customer Name, Latitude, Longitudeの値は無効です。エラーログを確認してください。ここで

は、シートのAPIのBATCHUPDATEのブログには、400エラー応答が発生しています:https://github.com/google/google-api-nodejs-client/issues/588

関連する問題