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