137 lines
5.2 KiB
Plaintext
Raw Normal View History

2025-02-19 15:29:59 +01:00
/*
* 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 "";
}
}