- 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!




