/* * gets standardized czech company data from mfcr ares servers * @param {string} subject ic * @param {integer} index of the result if more than one found * @return {string} standardized xml attribute * * http://wwwinfo.mfcr.cz/ares/ares_podminky.html.cz (max. 1000 requests / day; use cache service) * * ARES COMPANY * http://wwwinfo.mfcr.cz/ares/ares_xml_or.html.cz * http://wwwinfo.mfcr.cz/ares/ares_xml_standard.html.cz * */ function getAresCompanyData(subjectIc, returnParameter) { // check variable defined and set default if not subjectIc = (subjectIc || "25334310"); //75914999, 27074358, 24297453, 62576836 //returnParameter = (returnParameter || "Psc"); returnParameter = (returnParameter || "Dic"); // standardize lowercase input subjectIc = subjectIc.toLowerCase(); // get address hash var hashPrefix = "ARES,COMPANY,"; var addressHash = Utilities.base64Encode(hashPrefix + subjectIc); // catch exception try { // cache handler var urlContent = null; var publicCache = CacheService.getPublicCache(); //publicCache.remove(addressHash); var cacheContent = publicCache.get(addressHash); if (cacheContent != null) { urlContent = cacheContent; } else { var urlResponse = UrlFetchApp.fetch(encodeURI("http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_bas.cgi?ico=" + subjectIc + "&rozsah=0&xml=0&stdadr=true")); //var urlResponse = UrlFetchApp.fetch(encodeURI("http://icanhazip.com/")); //get public ip address var urlResponseCode = urlResponse.getResponseCode(); var urlContent = urlResponse.getContentText(); // override //var xmlFileContent = DocsList.getFileById("0BxFmaCpVqO38S3l6NXJtdzBINW8").getContentAsString(); //var urlContent = xmlFileContent; // cache for one day publicCache.put(addressHash, urlContent, 86400); } } catch(e) { Logger.log("# ERROR; can not get source url content "+"[ "+e+" ]"); throw "nelze získat data ze zdrojové adresy"; return false; } // catch exception try { // parse xml var parsedXml = Xml.parse(urlContent, false); // define namespaces var xmlNsOdpoved = "http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer_basic/v_1.0.3"; var xmlNsStdadr = "http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_datatypes/v_1.0.3"; //get common root element //var xmlElementVbas = rootXmlElement.getElement("Odpoved").getElement("VBAS"); //get root elements var rootXmlElement = parsedXml.getElement(); var xmlElementVbas = rootXmlElement.getElements(xmlNsOdpoved, "Odpoved")[0].getElements(xmlNsStdadr, "VBAS")[0]; } catch(e) { Logger.log("# ERROR; can not parse root xml elements"+"[ "+e+" ]"); throw "nelze rozpoznat kořenové elementy xml"; return false; } // catch exception //try { // // get ares preformated address // var preformatedAddress = xmlElementVbas.AA.NU.Text + " " + xmlElementVbas.AA.CD.Text + "/" + xmlElementVbas.AA.CO.Text + ", " + xmlElementVbas.AA.PSC.Text + " " + xmlElementVbas.AA.N.Text + ", " + xmlElementVbas.AA.NS.Text; // // get geocoder result // var geoArray = getGeocoderStandardAddress(preformatedAddress, 0); //} catch(e) { // Logger.log("# ERROR; can not parse geocoder values"+"[ "+e+" ]"); // throw "nelze rozpoznat hodnoty geokodéru"; // return false; //} // catch exception try { // structure data returns switch(returnParameter) { case "Dic" : if ("DIC" in xmlElementVbas) { return xmlElementVbas.DIC.Text; } else { return false; } case "JePlatceDph" : if ("DIC" in xmlElementVbas) { return true; } else { return false; } case "KodPravForma" : return xmlElementVbas.PF.KPF.Text; //case "NazPravForma" : return xmlElementVbas.PF.NPF.Text; case "ObchFirma" : return xmlElementVbas.OF.Text; case "NazUlice" : return xmlElementVbas.AA.NU.Text; case "CisDomov" : return xmlElementVbas.AA.CD.Text; case "CisOrient" : if ("CO" in xmlElementVbas.AA) { return xmlElementVbas.AA.CO.Text; } else { return xmlElementVbas.AA.CA.Text; } case "Psc" : return xmlElementVbas.AA.PSC.Text; case "NazObce" : return xmlElementVbas.AA.N.Text; //case "Aktivni" : return xmlElementVbas.ROR.SOR.SSU.Text; //case "MestCastObvod" : // if (geoArray["sublocality"] == xmlElementVbas.AA.N.Text) { // return ""; // } else { // //return geoArray["sublocality"].split(" ")[1]; // return geoArray["sublocality"]; // } //case "NazZeme" : return xmlElementVbas.AA.NS.Text; //case "KodZeme" : return geoArray["country"]; case "SpisZnac" : return xmlElementVbas.ROR.SZ.SD.T.Text + ";" + xmlElementVbas.ROR.SZ.OV.Text; //case "GpsSour" : return geoArray["lat"] + "," + geoArray["lng"]; case "GeoAdresa" : return xmlElementVbas.AA.NU.Text + " " + xmlElementVbas.AA.CD.Text + ", " + xmlElementVbas.AA.PSC.Text + " " + xmlElementVbas.AA.N.Text; } } catch(e) { //Logger.log("# ERROR; can not parse xml "+"[ "+e+" ]"); //throw "nelze rozpoznat xml"; return ""; } }