Hi, You can use the *cell feed* to set the values in the header row, and then once this is done, use the *list feed* to insert rows.
It hurts less if you realise that any Google-provided library in respect of the Spreadsheet API is just a thin convenience wrapper over the GData 'everything is an Atom article' protocol. So: be stalwart and learn the protocol; be grateful that you don't have to muck around with XML. It's a waste of energy to be incredulous that there isn't an api like aSheet.addRow(String[]). Don't get attached to the ideas behind the GData protocol though (it's easy to, once you get over the initial odd-ness). The GData stuff is going out the window, to be replaced with something newer and shinier. Well, that's what we've been told. We've got no idea if it'll actually address any common use-cases (such as creating a spreadsheet and appending a row!) better than the current offering. And we don't know when it will arrive. But they are at least (we hope) working on *something*, which will (we hope) excuse them for basically abandoning this API for half a decade, closing all our bug reports as 'obsolete' without actually *releasing* the facilities which obsolete them, and generally pretending that things are fine, and wondering why the hell are the users complaining anyway. Welcome to google-spreadsheets-api! I see you've already been introduced ... !!! cheers, David. On Thu, Oct 25, 2012 at 9:26 PM, Mandar <[email protected]> wrote: > Hello, > May I know, Do we need to set this first row (header row ) manually > after creating a worksheet , because if we don't then the same error > message is shown. > Kindly highlight this point here. > > > > On Wednesday, October 24, 2012 8:46:11 PM UTC+2, steve gourley wrote: >> >> You have to set the first row with values. This is the header row. >> >> >> list rowRow of cells in a worksheet, represented as a key-value pair, >>> where each key is a column name, and each value is the cell value. The >>> first row of a worksheet is always considered the header row when using the >>> API, and therefore is the row that defines the keys represented in each row. >> >> >> Then you match those up with the LocalName and it works fine as long as >> you don't use numbers. >> >> >> On Wednesday, October 24, 2012 4:14:26 AM UTC-6, Mandar wrote: >>> >>> Hello, >>> I am also getting the same error for 4 days now, I am able to delete a >>> row or update it (if i add manually), but adding a row seems to be >>> generating this bad response. >>> >>> >>> >>> Le mercredi 24 octobre 2012 03:56:25 UTC+2, steve gourley a écrit : >>>> >>>> Hi I have a google.gov account and I am trying to fool with the >>>> spreadsheet api to write to a worksheet. I'm using the clientLogin to use >>>> my google.gov login from a .net console app that will periodically >>>> write to the spreadsheet. >>>> >>>> I am successfully able to authenticate, list my spreadsheets, grab the >>>> one I want, grab the worksheet and create some row elements but inserting >>>> fails. The response status code is 400 bad request, the response string is >>>> We're sorry, a server error occurred. Please wait a bit and try reloading >>>> your spreadsheet. >>>> >>>> The exception message is Execution of request failed: >>>> https://spreadsheets.google.**com/feeds/list/some<https://spreadsheets.google.com/feeds/list/some>mumbo >>>> jumbo/od6/private/full >>>> >>>> the url for my spreadsheet in a browser is something like >>>> https://docs.google.com/**a/utah.gov/spreadsheet/ccc?**key=<https://docs.google.com/a/utah.gov/spreadsheet/ccc?key=> >>>> >>>> strack trace >>>> >>>> at Google.GData.Client.**GDataRequest.Execute() >>>> at Google.GData.Client.**GDataGAuthRequest.Execute(**Int32 >>>> retryCounter) >>>> at Google.GData.Client.**GDataGAuthRequest.Execute() >>>> at Google.GData.Client.Service.**EntrySend(Uri feedUri, AtomBase >>>> baseEntry, GDataRequestType type, AsyncSendData data) >>>> at Google.GData.Client.Service.**Insert(Uri feedUri, AtomEntry >>>> newEntry, AsyncSendData data) >>>> at Google.GData.Client.Service.**Insert[TEntry](Uri feedUri, TEntry >>>> entry) >>>> at >>>> Google.GData.Client.Service.**Google.GData.Client.IService.**Insert(AtomFeed >>>> feed, AtomEntry entry) >>>> at Google.GData.Client.Service.**Insert[TEntry](AtomFeed feed, >>>> TEntry entry) >>>> at mapservResponseTimes.Program.**Main() in >>>> c:\Projects\Experimental\**mapservResponseTimes\Program.**cs:line 58 >>>> at System.AppDomain._**nExecuteAssembly(**RuntimeAssembly assembly, >>>> String[] args) >>>> at System.AppDomain.**ExecuteAssembly(String assemblyFile, Evidence >>>> assemblySecurity, String[] args) >>>> at Microsoft.VisualStudio.**HostingProcess.HostProc.** >>>> RunUsersAssembly() >>>> at System.Threading.ThreadHelper.**ThreadStart_Context(Object state) >>>> at System.Threading.**ExecutionContext.RunInternal(**ExecutionContext >>>> executionContext, ContextCallback callback, Object state, Boolean >>>> preserveSyncCtx) >>>> at System.Threading.**ExecutionContext.Run(**ExecutionContext >>>> executionContext, ContextCallback callback, Object state, Boolean >>>> preserveSyncCtx) >>>> at System.Threading.**ExecutionContext.Run(**ExecutionContext >>>> executionContext, ContextCallback callback, Object state) >>>> at System.Threading.ThreadHelper.**ThreadStart() >>>> >>>> What gem of information am I missing to use this with a google for >>>> business account? >>>> >>>
