当前位置: 首页 > 知识库问答 >
问题:

Google Sheet API批量更新问题iOS

鲁俊友
2023-03-14

我试图使用google sheet API for iOS进行批量更新,但在“数据[0]处收到一个无效值错误。值[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"

“数据[0]处的值无效。值[1]'(type.googleapis.com/google.protobuf.ListValue),“客户名称”在“数据[0]处的值无效。值[2]'(type.googleapis.com/google.protobuf.ListValue),“纬度”在“数据[0]处的值无效。值[3]'(type.googleapis.com/google.protobuf.ListValue),“经度”在“数据[0]处的值无效。值[4]'(type.googleapis.com/google.protobuf.ListValue),“上次更新的”数据[1]处的值无效。值[0]'(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“rt”值无效。值[1]'(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“SHJ”值无效。值[2]'(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“150.00”值无效。值[3]'(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“100.00”值无效。值[4]'(type.googleapis.com/google.protobuf.ListValue),“2:00:00”)“UserInfo={error=数据[0]处的无效值。值[0]'(type.googleapis.com/google.protobuf.ListValue),“客户ID”在数据[0]处的无效值。值[1]'(type.googleapis.com/google.protobuf.ListValue),“客户名称”在数据[0]处的无效值[2]。”(type.googleapis.com/google.protobuf.ListValue),“纬度”在“数据[0].值[3]”(type.googleapis.com/google.protobuf.ListValue),“经度”在“数据[0].值[4].”(type.googleapis.com/google.protobuf.ListValue),“上次更新在“数据[1].值[0].”(type.googleapis.com/google.protobuf.ListValue),”rt“数据[1]处的无效值。值[1]”(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“SHJ”无效值。值[2]”(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“150.00”无效值。值[3]”(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“100.00”无效值。值[4]”(type.googleapis.com/google.protobuf.ListValue),“2:00:00”,NSLocalizedFailureReason=(数据[0]处的值无效。值[0]。(type.googleapis.com/google.protobuf.ListValue),“客户ID”在数据[0]处的值无效。(type.googleapis.com/google.protobuf.ListValue),“客户名称”在数据[0]处的值无效(type.googleapis.com/google.protobuf.ListValue),“纬度”在“数据[0].值[3]”(type.googleapis.com/google.protobuf.ListValue),“经度”在“数据[0].值[4].”(type.googleapis.com/google.protobuf.ListValue),“上次更新在“数据[1].值[0].”(type.googleapis.com/google.protobuf.ListValue),”rt“数据[1]处的无效值。值[1]”(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“SHJ”无效值。值[2]”(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“150.00”无效值。值[3]”(type.googleapis.com/google.protobuf.ListValue),“数据[1]处的“100.00”无效值。值[4]”(type.googleapis.com/google.protobuf.ListValue),“2:00:00”,GTLStructuredError=GTLErrorObject 0x7f89ca465990:{代码:400消息:“数据[0].值[0]'处的值无效(type.googleapis.com/google.protobuf.ListValue),“客户ID”数据[0].值[1]'(type.googleapis.com/google.protobuf.ListValue),“客户名称”处的值无效“数据[0].值[2]'(type.googleapis.com/google.protobuf.ListValue)处的值无效,“纬度”处的值无效“数据[0].值[3]'(type.googleapis.com/google.protobuf.ListValue),“经度”处的值无效“数据[0].值[4]'(type.googleapis.com/google.protobuf.ListValue),“上次更新的值无效”处的值无效“数据[1].值[0]'(type.googleapis.com/google.protobuf.ListValue),“rt”在“data[1].值[1]”(type.googleapis.com/google.protobuf.ListValue),“SHJ”在“data[1].值[2]”(type.googleapis.com/google.protobuf.ListValue),“150.00”在“data[1].值[3]”(type.googleapis.com/google.protobuf.ListValue),“100.00”“数据[1]。值[4]”(type.googleapis.com/google.protobuf.ListValue)处的值无效,“2:00:00”错误?:[1]状态?:“无效参数”}

共有2个答案

欧阳高昂
2023-03-14

错误表示请求参数的值无效,错误响应提供关于哪个值无效的信息。没有解决问题就不要重试。您需要为错误响应中指定的参数提供一个有效的值。您需要对API查询进行更改才能使其正常工作。您的客户名称,纬度,经度值无效。检查您的错误日志。

以下是API BatchUpdate博客遇到的400错误响应:https://github.com/google/google-api-nodejs-client/issues/588

谷梁宜
2023-03-14

值应为二维数组。它们的形式应为[['a'、'b'、'c']、[1、2、3]]

您将这些值作为1d数组['a'、'b'、'c']提供,并且错误消息抱怨'a'不能放入ListValue,因为它不是数组。解决方案是使用2d数组,尽管我不能在这里提供一个示例,说明您应该做什么,因为我不确定您打算如何将输入映射到电子表格。

 类似资料:
  • 本文向大家介绍Mybatis批量更新报错问题,包括了Mybatis批量更新报错问题的使用技巧和注意事项,需要的朋友参考一下 下面给大家介绍mybatis批量更新报错问题, 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybatis批量更新操作如下   下面看下Mybatis批量更新数据的方式   第一种方式 但是这种方式修改的字段值都是一样的。 第

  • 问题内容: 对于Java-JDBC API和Oracle数据库,我有一个稍微独特的要求。我将autoCommit设置为默认值,这对于Oracle是正确的,并且我使用的示例与此链接相似。 但是,当我添加说1000批次时,可以说每个批次都是插入的。并且让我们假设大约20条记录违反了某些约束,我希望其余980条变为COMMITTED(并且以后对使用任何其他连接的任何其他查询都可见)到数据库,并忽略20条

  • 一、简介 方便用户在设置URL规则时更新url,无需手动去更新各页面URL。只需选择就能批量更新URL即可。 二、功能演示 1.批量更新URL 1、仅当内容页URL规则发上变化时,请批量更新,地址未改变时,不需要更新 。 2、规则设置:设置 > 相关设置 > 管理栏目 > 添加或修改栏目 选择需要更新的模型和栏目,输入每轮更新的信息数目提交则完成批量更新URL操作。如下图所示:

  • 一、简介 主要用来操作黄页模块的相关更新操作 ! 1、仅当启用、关闭伪静态时,请批量更新所有链接地址,除此,不需要更新 。 2、启用伪静态在模块配置里。 3、更新企业URL,只需选中企业库模型即可,不必选分类。 二、功能演示

  • 问题内容: 我正在尝试将数据从此链接插入到我的SQL Server https://www.ian.com/affiliatecenter/include/V2/CityCoordinatesList.zip 我创建了表 我正在运行以下脚本来进行批量插入 但是批量插入失败,并出现以下错误 当我使用google时,我发现了几篇文章,指出问题可能出在RowTerminator上,但我尝试了诸如/ n

  • 我希望将Spring Batch与RabbitMQ集成。我已经开发了如下代码,但是没有数据通过通道。代码中有什么问题? hannel.java 顾客JAVA CustomerFieldSetMapper。JAVA JobConfig。JAVA 应用属性 顾客csv SpringBatchAmqpApplication.java