Jeżeli chcesz wykorzystać dane z Calamari poza standardowymi, gotowymi integracjami, możesz użyć do tego nasze publiczne API, dostępne tu → developers.calamari.io
W tym artykule dowiesz się jak w prosty sposób skorzystać z dowolnego endpointu API i przenieść dane do własnego arkusza Google Spreadsheet dzięki skorzystaniu z AppScripts.
Posłużmy się przykładem, w którym do arkusza Google chcemy pobrać informację o pracownikach i świętach publicznych do nich przypisanych w wybranym zakresie czasu.
Utwórz dowolny arkusz Google Spreadsheet lub wybierz istniejący.
Otwórz AppScripts i w edytorze utwórz plik korzystając z przykładowego skryptu poniżej.
Endpointy, z których w tym przykładzie skorzystamy to:
employees/v1/list
holiday/v1/find
Przykładowy skrypt:
var sheet = SpreadsheetApp.openById("ID TWOJEGO SPREADSHEETU");
function pullEmailList()
{
var sheetss = sheet.getSheetByName("Calamari");
var dates = sheetss.getRange(2,1,8, 8).getDisplayValues();
var date_from_global=dates[0][7];
var date_to_global=dates[1][7];
var req = "employees/v1/list";
var response = getPostResponse(req, {"page" : 0});
var listLength = response.totalPages;
var employeeInfo = [];
for(var i = 0; i <= listLength; i++)
{
response = getPostResponse(req, {"page" : i});
var numOfEmployees = response.employees.length;
for(var j = 0; j < numOfEmployees; j ++)
{
var employee = response.employees[j];
var holidays = pullPublicHolidaysForEmployeDates(employee.email,date_from_global,date_to_global);
var numOfHolidays = holidays.length;
for(var z = 0; z < numOfHolidays; z ++)
{
var h = holidays[z];
//var info = [employee.firstName, employee.lastName, employee.email];
employeeInfo.push([employee.email,h.name,h.start,h.end]);
}
//employeeInfo.push([employee.email]);
}
}
var ss_EmailList = sheet.getSheetByName('Calamari');
var lastRow = ss_EmailList.getLastRow();
ss_EmailList.getRange(2,1,lastRow,4).clearContent();
ss_EmailList.getRange(2,1, employeeInfo.length, 4).setValues(employeeInfo);
}
function pullPublicHolidaysForEmployeDates(emplEmail, dateFrom, dateTo)
{
var req = "holiday/v1/find";
var response = getPostResponse(req, {
"employee": emplEmail,
"from": dateFrom,
"to": dateTo
});
return response;
}
function getPostResponse(req, data)
{
var keys = {
user: "calamari",
passwd: "API key z Twojego konta w Calamari"};
var API_URL = 'https://TWOJADOMENA.calamari.io/api/';
var authHeader = 'Basic ' + Utilities.base64Encode(keys.user + ':' + keys.passwd);
var options = {
headers: {Authorization: authHeader},
muteHttpExceptions: true,
contentType: 'application/json',
method: 'post',
payload: JSON.stringify(data)
}
var response = UrlFetchApp.fetch(API_URL + req, options);
//Logger.log(response.getContentText());
return JSON.parse(response);
//return response;
}
Pamiętaj aby w powyższym skrypcie podmienić:
2. W drugim pliku utworzymy przycisk, który będzie w naszym arkuszu generował uruchomienie skryptu:
Użyj przykładowego skryptu:
// create custom button to run script in spreadsheet.
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Calamari')
.addItem("Get Employees and Holidays", 'pullEmailList')
.addToUi();
}
3. W arkuszu uruchamiamy nasz skrypt wybierając zakres dat (pkt 1).
Gotowe! :)
Prosta integracja zwraca informację osobach i świętach publicznych w wybranym okresie.
Jeżeli masz jeszcze jakieś pytania - napisz do nas na [email protected]
Chętnie pomożemy!