I am having trouble writing a script to use SOAP to retrieve my report data. There are many examples on how to do this in .NET and other languages, but not in WSH (VBScript/JScript).
The goal is to schedule this script to automatically pull the report data from AdWords API once per day and save it to a file/database. Below is my script so far. I am using "MSXML2.ServerXMLHTTP" to post the XML to the API URL instead of using the MSSOAP components, mainly because I could not find enough documentation / examples on how to do it with the SOAP library. Any help or direction to a good resource or example would be much appreciated. Thanks, Simon ========JSCRIPT CODE BELOW======== var obj_params = { email:'ad...@mycompany.com', password:'MySecretPassword', useragent:'MyCompanyName', developerToken:'xxxxxxxxxxxxxxxxxxxxx', applicationToken:'xxxxxxxxxxxxxxxxxxxxx', clientEmail:'custo...@hiscompany.com', startDay:_fDate(obj_date), endDay:_fDate(obj_date) }; var obj_xml = new ActiveXObject("Msxml2.DOMDocument"); obj_xml.async = false; obj_xml.loadXML(_toNode(obj_params,'r')); var obj_xsl = new ActiveXObject("Msxml2.DOMDocument"); obj_xsl.async = false; obj_xsl.load(str_script_path + 'adwords_soap.xsl'); var str_xml = obj_xml.transformNode(obj_xsl); var str_url = 'https://adwords.google.com/api/adwords/v13/ ReportService'; var obj_http = WScript.CreateObject("MSXML2.ServerXMLHTTP"); obj_http.open('POST',str_url,false); obj_http.setRequestHeader('Content-Type','text/xml; charset=utf-8'); obj_http.setRequestHeader('Content-Length',str_xml.length); obj_http.setRequestHeader('SOAPAction','"validateReportJob"'); obj_http.send(str_xml); WScript.Echo(obj_http.responseText); function _fDate(d) { //some un-important code here to format date as 'YYYY-MM-DD' return r; } function _toNode(o,r) { var x = ''; for (var i in o) x += '<' + i + '>' + _XMLEnc(o[i]) + '</' + i + '>'; if (r) x = '<' + r + '>' + x + '</' + r + '>'; return x; } function _XMLEnc(s) { var r = s; var m = {'"':'"','\'':''','&':'&','<':'<','>':'>'}; for (var i in m) r = r.split(i).join(m[i]); return r; } ========XML RESPONSE EXCERPT BELOW======== <faultcode>soapenv:Server.userException</faultcode> <faultstring>org.xml.sax.SAXException: Unable to create JavaBean of type com.google.ads.netapi.services.report.ReportJob. Missing default constructor? Error was: java.lang.IllegalAccessException: Class org.apache.axis.encoding.ser.BeanDeserializer can not access a member of class com.google.ads.netapi.services.report.ReportJob with modifiers "protected".</faultstring> <detail> <ns1:stackTrace xmlns:ns1="http://xml.apache.org/ axis/">org.xml.sax.SAXException: Unable to create JavaBean of type com.google.ads.netapi.services.report.ReportJob. Missing default constructor? Error was: java.lang.IllegalAccessException: Class org.apache.axis.encoding.ser.BeanDeserializer can not access a member of class com.google.ads.netapi.services.report.ReportJob with modifiers "protected". at org.apache.axis.encoding.ser.BeanDeserializer.startElement (BeanDeserializer.java:124) at org.apache.axis.encoding.DeserializationContext.startElement (DeserializationContext.java:1038) at org.apache.axis.message.SAX2EventRecorder.replay (SAX2EventRecorder.java:159) at org.apache.axis.message.MessageElement.publishToHandler (MessageElement.java:1138) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:199) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:342) at org.apache.axis.providers.java.RPCProvider.processMessage (RPCProvider.java:146) at com.google.ads.netapi.config.AdWordsApiProvider.processMessage (AdWordsApiProvider.java:62) at org.apache.axis.providers.java.JavaProvider.invoke (JavaProvider.java:319) at org.apache.axis.strategies.InvocationStrategy.visit (InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java: 450) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:285) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java: 637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service (AxisServletBase.java:301) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at com.google.gse.FilteredServlet$ChainEnd.doFilter (FilteredServlet.java:172) at com.google.inject.servlet.DefaultFilterPipeline.dispatch (DefaultFilterPipeline.java:43) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java: 110) at com.google.gse.FilteredServlet$Chain.doFilter(FilteredServlet.java: 149) at com.google.soap.base.LoggingFilter.doFilter(LoggingFilter.java:142) at com.google.gse.FilteredServlet$Chain.doFilter(FilteredServlet.java: 149) at com.google.servlet.balancing.LoadBalancingFilter.processRequestLocally (LoadBalancingFilter.java:425) at com.google.servlet.balancing.LoadBalancingFilter.loadBalanceRequest (LoadBalancingFilter.java:228) at com.google.servlet.balancing.LoadBalancingFilter.doFilter (LoadBalancingFilter.java:169) at com.google.gse.FilteredServlet$Chain.doFilter(FilteredServlet.java: 149) at com.google.gse.FilteredServlet.service(FilteredServlet.java:120) at com.google.gse.HttpConnection.runServletFromWithinSpan (HttpConnection.java:804) at com.google.gse.HttpConnection.access$000(HttpConnection.java:63) at com.google.gse.HttpConnection$1.runServletFromWithinSpan (HttpConnection.java:732) at com.google.gse.GSETraceHelper$TraceableServletRunnable$1.run (GSETraceHelper.java:388) at com.google.tracing.LocalTraceSpanRunnable.run (LocalTraceSpanRunnable.java:56) at com.google.tracing.LocalTraceSpanBuilder.run (LocalTraceSpanBuilder.java:466) at com.google.gse.GSETraceHelper $TraceableServletRunnable.runWithTracingEnabled(GSETraceHelper.java: 348) at com.google.gse.GSETraceHelper$TraceableServletRunnable.run (GSETraceHelper.java:331) at com.google.gse.HttpConnection.runServlet(HttpConnection.java:728) at com.google.gse.HttpConnection.run(HttpConnection.java:695) at com.google.gse.DispatchQueue$WorkerThread.run(DispatchQueue.java: 354) </ns1:stackTrace> </detail> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en -~----------~----~----~----~------~----~------~--~---