Wszystkie kolekcje
Integracje
API
Integracja Calamari z Google Spreadsheets dzięki API i AppsScripts
Integracja Calamari z Google Spreadsheets dzięki API i AppsScripts
Agata Skowrońska avatar
Napisane przez Agata Skowrońska
Zaktualizowano ponad tydzień temu
  1. 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.

    1. Utwórz dowolny arkusz Google Spreadsheet lub wybierz istniejący.

    2. 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ć:

  • ID arkusza

  • klucz API/hasło

  • nazwę Twojej domeny w Calamari

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!

Czy to odpowiedziało na twoje pytanie?