草庐IT

ios - Google Sheet API批量更新问题iOS

coder 2024-01-14 原文

我正在尝试使用iOS的Google Sheet API进行批处理更新,但在'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"

“数据[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),“客户ID”
“数据[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”,NSLocalizedFailureReason =('data [0] .values [处的无效值0]”(type.googleapis.com/google.protobuf.ListValue),“客户ID”
“数据[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"),GTLStructuredError=GTLErrorObject 0x7f89ca465990:{code:400消息:“无效“数据[0]。值[0]”(type.googleapis.com/google.protobuf.ListValue)处的值,“客户ID”
“数据[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“}}

最佳答案

值应为二维数组。它们应采用以下形式
[['a','b','c'],[1,2,3]]

您以一维数组['a','b','c']的形式提供值,并且错误消息提示'a'不能放入ListValue中,因为它不是数组。解决方案是使用2d数组,尽管由于不确定不确定您打算如何将输入映射到电子表格,因此我无法在此处提供确切的示例。

关于ios - Google Sheet API批量更新问题iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901386/

有关ios - Google Sheet API批量更新问题iOS的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  5. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  6. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  7. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  8. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  9. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  10. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

随机推荐