Init
This commit is contained in:
commit
5cd0dd77a0
137
Fetch.gs
Normal file
137
Fetch.gs
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
/*
|
||||||
|
* 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 "";
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user