OK, I will do that, but in my interest for self-preservation I would like to be able to get something working today. I almost considered hiring a temp to hit the update button onthe docs update button on the docs.google.com page every minute (LOL), I also thought of using Amazon's mechanical turk and offer .05 an upload :)
Since we have gone so far with this to you have anything else I can try before my surrender? On Jun 16, 2009, at 1:59 PM, Eric Bidelman wrote: > See my earlier reply. Java and Python are the most complete w.r.t. > examples > and code snippets in the docs: > http://code.google.com/apis/documents/docs/2.0/developers_guide_java.html > http://code.google.com/apis/documents/docs/1.0/developers_guide_python.html > > E > > On Tue, Jun 16, 2009 at 8:00 AM, harry mendell <harry.mend...@gmail.com > > wrote: > Stuck again! Do any of the new apis support all of the high level > client code, If so I'm hitting the ejector seat button. I don't care > if I have to learn a new language from scratch be it "ruby on rails > or whatever", the whole point of this exercise is to make developing > new apps a " LEGO kit". Otherwise I am going to have to really study > these low level protocols. It reminds me of my old assembler days. > The more things change the more they remain the same. At least I can > see from the other forum posts that I am not alone in my > frustration. Step back for a second. Almost all of the forum > questions involve what is essentially reading and writing data. I > thought that was solved in the 1960s :) > > I have a suggestion. Take all of the classes/methods that allow > public and published data and produce a private and behind the > firewall version that does exactly the same thing. Boom! Problems > solved at once and I'll have a chance using Google internally. - Harry > > In the mean time could you please sherpa me to mid-base? > On Jun 15, 2009, at 7:50 PM, Eric Bidelman wrote: > >> That 3rd parameter to update is a mimetype, not an file extension. >> That's the GDocumntsAllowedType hashmap takes care of :) >> >> try: text/csv >> >> Eric >> >> On Mon, Jun 15, 2009 at 4:35 PM, harry mendell <harry.mend...@gmail.com >> > wrote: >> Google.GData.Client.GDataRequestException was unhandled >> Message="Execution of request failed: >> http://docs.google.com/feeds/media/private/full/spreadsheet:rqfFdRlpaWjFOyJ9MrslMjg >> >> " >> Source="Google.GData.Client" >> ResponseString="Malformed Content-Type" >> StackTrace: >> 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.StreamSend(Uri targetUri, >> Stream inputStream, GDataRequestType type, String contentType, >> String slugHeader, String etag, AsyncSendData data) >> at Google.GData.Client.Service.StreamSend(Uri targetUri, >> Stream inputStream, GDataRequestType type, String contentType, >> String slugHeader) >> at Google.GData.Client.Service.Update(Uri uriTarget, Stream >> input, String contentType, String slugHeader) >> at myfirstcsharp.Program.Main(String[] args) in C:\Documents >> and Settings\harry\My Documents\Visual Studio 2008\Projects >> \updatesheet\myfirstcsharp\Program.cs:line 54 >> at System.AppDomain._nExecuteAssembly(Assembly assembly, >> String[] args) >> at System.AppDomain.nExecuteAssembly(Assembly assembly, >> String[] args) >> at System.Runtime.Hosting.ManifestRunner.Run(Boolean >> checkAptModel) >> at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() >> at >> System >> .Runtime >> .Hosting.ApplicationActivator.CreateInstance(ActivationContext >> activationContext, String[] activationCustomData) >> at >> System >> .Runtime >> .Hosting.ApplicationActivator.CreateInstance(ActivationContext >> activationContext) >> at System.Activator.CreateInstance(ActivationContext >> activationContext) >> at >> Microsoft >> .VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() >> at System.Threading.ThreadHelper.ThreadStart_Context(Object >> state) >> at System.Threading.ExecutionContext.Run(ExecutionContext >> executionContext, ContextCallback callback, Object state) >> at System.Threading.ThreadHelper.ThreadStart() >> InnerException: System.Net.WebException >> Message="The remote server returned an error: (400) Bad >> Request." >> Source="System" >> StackTrace: >> at System.Net.HttpWebRequest.GetResponse() >> at Google.GData.Client.GDataRequest.Execute() >> InnerException: >> >> >> On Jun 15, 2009, at 6:49 PM, Eric Bidelman wrote: >> >>> Sorry. The definition of GDocumntsAllowedType is in the lib's >>> source: >>> http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/gdocuments/documentservice.cs#56 >>> >>> What is the exception/response from the server? >>> >>> Eric >>> >>> On Mon, Jun 15, 2009 at 3:37 PM, harry mendell <harry.mend...@gmail.com >>> > wrote: >>> >>> Dear Eric, >>> I tried adapting your code and wrote a test which I copied >>> below. It fails at >>> DocumentEntry entry = service.Update(new >>> Uri(lastUploadEntry.MediaUri.ToString()), stream, "CSV", >>> lastUploadEntry.Title.Text) as DocumentEntry; >>> which is almost at the bottom. I think I'm having a some code of >>> compatibility issue between the ACL and token auth, but this end >>> of the pool is pretty deep. >>> Would you mind taking a look? >>> Thanks, >>> Harry >>> >>> >>> >>> >>> >>> >>> using System; >>> using System.IO; >>> using System.Collections; >>> using System.Net; >>> using System.Collections.Generic; >>> using Google.Spreadsheets; >>> using System.Linq; >>> using System.Text; >>> using Google.GData.Documents; >>> using Google.GData.Client; >>> using Google.GData.Extensions; >>> >>> >>> >>> namespace myfirstcsharp >>> { >>> >>> class Program >>> { >>> static void Main(string[] args) >>> { >>> DocumentsService service = new DocumentsService("HBM- >>> DocListUploader-1"); >>> >>> ((GDataRequestFactory)service.RequestFactory).KeepAlive = false; >>> service.setUserCredentials("qvtuat", "qvtqvtqvt"); >>> //force the service to authenticate >>> DocumentsListQuery query = new DocumentsListQuery(); >>> query.NumberToRetrieve = 1; >>> service.Query(query); >>> >>> >>> // For testing only. Creates document called radar.csv >>> DocumentEntry lastUploadEntry = >>> service.UploadDocument("c:/radar.csv", "radar.csv"); >>> // For testing only. Now lets see if we can update it >>> FileInfo fileInfo = new FileInfo("c:/radar.csv"); >>> FileStream stream = fileInfo.Open(FileMode.Open, >>> FileAccess.Read, FileShare.ReadWrite); >>> >>> try >>> { >>> /* It didn't recogize GDocumntsAllowedType so I >>> commented the check since I know its good type >>> // convert the extension to caps and strip the "." >>> off the front >>> string ext = >>> fileInfo.Extension.ToUpper().Substring(1); >>> String contentType = >>> (String)GDocumentsAllowedTypes[ext]; >>> >>> if (contentType == null) >>> { >>> throw new ArgumentException("File extension '" >>> + ext + "' is not recognized as valid."); >>> } >>> // Make sure we don't overwrite someone else's >>> changes. Use entry's ETag >>> */ >>> GDataRequestFactory factory = >>> (GDataRequestFactory)service.RequestFactory; >>> factory.CustomHeaders.Add("If-Match: " + >>> lastUploadEntry.Etag); >>> service.RequestFactory = factory; >>> DocumentEntry entry = service.Update(new >>> Uri(lastUploadEntry.MediaUri.ToString()), stream, "CSV", >>> lastUploadEntry.Title.Text) as DocumentEntry; >>> } >>> finally >>> { >>> stream.Close(); >>> } >>> } >>> } >>> } >>> >>> >>> On Jun 11, 2009, at 5:16 PM, Eric (Google) wrote: >>> >>>> >>>> This worked for me: >>>> >>>> DocumentsService service = new DocumentsService("yourCompany- >>>> AppName- >>>> v1"); >>>> // TODO: Fetch DocumentEntry >>>> ReplaceDocContents(entryToUpdate, "C:\somewhere\test.doc"); >>>> ... >>>> >>>> static public DocumentEntry ReplaceDocContents(DocumentEntry >>>> entryToUpdate, string replacementFileName) >>>> { >>>> DocumentEntry entry = null; >>>> >>>> FileInfo fileInfo = new FileInfo(replacementFileName); >>>> FileStream stream = fileInfo.Open(FileMode.Open, FileAccess.Read, >>>> FileShare.ReadWrite); >>>> >>>> try >>>> { >>>> // convert the extension to caps and strip the "." off the front >>>> string ext = fileInfo.Extension.ToUpper().Substring(1); >>>> >>>> String contentType = (String)GDocumentsAllowedTypes[ext]; >>>> >>>> if (contentType == null) >>>> { >>>> throw new ArgumentException("File extension '" + ext + >>>> "' is not recognized as >>>> valid."); >>>> } >>>> >>>> // Make sure we don't overwrite someone else's changes. Use >>>> entry's ETag >>>> GDataRequestFactory factory = (GDataRequestFactory) >>>> service.RequestFactory; >>>> factory.CustomHeaders.Add("If-Match: " + entryToUpdate.Etag); >>>> service.RequestFactory = factory; >>>> >>>> entry = service.Update(new >>>> Uri(entryToUpdate.MediaUri.ToString()), >>>> stream, contentType, >>>> entryToUpdate.Title.Text) as DocumentEntry; >>>> } >>>> finally >>>> { >>>> stream.Close(); >>>> } >>>> >>>> return entry; >>>> } >>>> >>>> You may have more luck next time if the post isn't "write my app >>>> for >>>> me". >>>> >>>> Eric >>>> >>>> On Jun 11, 11:49 am, harry mendell <qvt...@gmail.com> wrote: >>>>> I tried .net and first and can upload but not update. At this >>>>> point I >>>>> would be grateful for any solution. I've been at this for over a >>>>> week >>>>> and am ready to put my head through the wall:) >>>>> >>>>> PS I am able to do it a cell at a time with the spreadsheet api, >>>>> but >>>>> its slow, and besides I am not going to be able to sleep until I >>>>> get >>>>> this. I haven't felt like such a newbie since I poped out of my >>>>> mother. Starting to feel postal. >>>> >>>> >>> >>> >>> >>> >>> >>> >>> >>> >> >> >> >> >> >> >> > > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Docs Data APIs" group. To post to this group, send email to Google-Docs-Data-APIs@googlegroups.com To unsubscribe from this group, send email to google-docs-data-apis+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/Google-Docs-Data-APIs?hl=en -~----------~----~----~----~------~----~------~--~---