Kako koristiti asinhrone API pozive u ONLYOFFICE prilagođenim funkcijama
Prilagođene funkcije predstavljaju moćan i fleksibilan način za proširenje funkcionalnosti ONLYOFFICE Uređivača tabela. Kao deo naših stalnih napora na unapređenju platforme, najnovije izdanje ONLYOFFICE Docs 9.0 donosi podršku za asinhrone API pozive unutar prilagođenih funkcija. U ovom blog postu, pokazaćemo vam kako da ih uključite u sopstvena rešenja.
O ONLYOFFICE prilagođenim funkcijama
Prilagođenje funkcije su svestran i moćan dodatak ONLYOFFICE makroima u Uređivaču tabela. Omogućavaju vam da kreirate sopstvene funkcije koje se mogu izvesti i koristiti direktno unutar tabele.
(function () {
/**
* This is a custom function that can be used in the editor.
* @customfunction
* @param {number} value - description of the parameter.
* @returns {number} Description of the returned data.
*/
function customFunctionName(value) {
// Add your custom calculation logic here
return // your calculation result;
}
// Register the custom function with the editor
Api.AddCustomFunction(customFunctionName);
})();
Gde se nalazi: Prikaz > Makroi > Prilagođene funkcije
Šta se promenilo
Sa izdanjem ONLYOFFICE Docs 9.0, uveli smo mogućnost pozivanja asinhronih funkcija unutar vaših prilagođenih skripti.
Sada možete:
- Izvršavati asinhrone veb zahteve ka bilo kojim servisima.
- Slati asinhrone zahteve AI provajderima.
- Koristiti asinhroni JS kod u async funkcijama.
- Obraditi asinhrone odgovore.
- Izvoziti rezultate direktno u vašu tabelu.
(function () {
// Make an asynchronous request
let asyncFunc = async function (value) {
let request = await fetch("https://yourURL");
const jsonData = await request.json();
if (value === undefined) {
value = 2;
}
return jsonData;
};
/**
* This is a custom function that can be used in the editor.
* @customfunction
* @param {number} value - description of the parameter.
* @returns {number} Description of the returned data.
*/
async function customFunctionName(value) {
// Call the asynchronous function and return its result
return await asyncFunc(value);
}
// Register the custom function with the editor
Api.AddCustomFunction(customFunctionName);
})();
Korišćenje asinhronih API poziva u prilagođenim funkcijama
Za ovaj primer, koristićemo Sales Tax API sa sajta API Ninjas, koji vraća stopu poreza na promet države za bilo koji dati ZIP kod u SAD.
Napomena! Da biste koristili ovu ONLYOFFICE prilagođenu funkciju, moraćete da obezbedite svoj API ključ koji možete dobiti na API Ninjas vebsajtu.
Izrada makroa
Prvo definišemo asinhronu funkciju getSalesTax:
let getSalesTax = async function (value) {
}
Ona prima parametar value, koji bi trebalo da bude ZIP kod iz SAD.
Ako ZIP kod nije naveden, funkcija podrazumevano koristi 90210:
let getSalesTax = async function (value) {
}
if (undefined === value) {
value = 90210;
}
Pošto neki ZIP kodovi u SAD počinju sa 0, osiguravamo da je ZIP kod petocifreni string:
// Convert to string and add missing zeros if needed
let zipStr = value.toString();
while (zipStr.length < 5) {
zipStr = '0' + zipStr;
}
Na primer, 31 postaje 00031.
Zatim kreiramo URL zahteva za API tako što dodajemo ZIP kod kao query parametar:
I šaljemo GET zahtev ka API-ju:
let request = await fetch(url, {
method: 'GET',
headers: {
'X-Api-Key': 'yourAPIkey',
'Content-Type': 'application/json'
}
});
Nakon toga parsiramo JSON odgovor u upotrebljiv JavaScript objekat:
let jsonData = await request.json();
Ekstrahujemo polje state_rate iz prvog elementa u vraćenom nizu. To je poreska stopa države za navedeni ZIP kod. I vraćamo taj broj:
const taxRate = jsonData[0].state_rate;
return taxRate;
Zatim definišemo parametre prilagođene funkcije:
/**
* Function that returns state sales tax.
* @customfunction
* @param {number} value - zip code.
* @returns {number} Returns state sales tax data.
*/
Dobijamo odgovor iz asinhrone funkcije:
async function salestax(value) {
return await getSalesTax(value);
}
I registrujemo prilagođenu funkciju:
// Add the custom function
Api.AddCustomFunction(salestax);
})();
Sada možemo pozvati funkciju SALESTAX() direktno unutar tabele.
Ceo kod je sledeći:
(function () {
// Function that returns sales tax data from api-ninjas.com
let getSalesTax = async function (value) {
if (undefined === value) {
value = 90210;
}
// Convert to string and add missing zeros if needed
let zipStr = value.toString();
while (zipStr.length < 5) {
zipStr = '0' + zipStr;
}
const url = 'https://api.api-ninjas.com/v1/salestax?zip_code=' + zipStr;
let request = await fetch(url, {
method: 'GET',
headers: {
'X-Api-Key': 'yourAPIkey',
'Content-Type': 'application/json'
}
});
let jsonData = await request.json();
const taxRate = jsonData[0].state_rate;
return taxRate;
};
/**
* Function that returns state sales tax.
* @customfunction
* @param {number} value - zip code.
* @returns {number} Returns state sales tax data.
*/
async function salestax(value) {
return await getSalesTax(value);
}
// Add the custom function
Api.AddCustomFunction(salestax);
})();
Sada možemo sačuvati ovu prilagođenu funkciju i videti kako funkcioniše!
Nadamo se da će vam ova nova funkcionalnost omogućiti da kreirate još robusnija i svestranija rešenja za vaše zadatke. U ONLYOFFICE-u, posvećeni smo dizajnu i isporuci tehnologija koje mogu biti prilagođene vašim specifičnim potrebama.
Pozivamo vas da eksperimentišete sa asinhronim prilagođenim funkcijama i u potpunosti iskoristite ovu proširenu funkcionalnost. Ako imate zanimljive ideje ili predloge, voleli bismo da čujemo od Vas! Uvek smo otvoreni za povratne informacije i saradnju. Srećno u vašim istraživačkim poduhvatima!
Create your free ONLYOFFICE account
View, edit and collaborate on docs, sheets, slides, forms, and PDF files online.