REST dla podróżujących sprzedawców: korzystanie z danych Google na Salesforce.com

Lane LiaBraaten, Google Developer Programs
Listopad 2007 r.

Wprowadzenie

Zarówno Salesforce.com, jak i Google hostują popularne aplikacje typu „Oprogramowanie jako usługa”. Obie te organizacje udostępniają interfejsy API, które umożliwiają deweloperom dostęp do dużych magazynów danych, w których działają te aplikacje, a gdy łączymy ze sobą oba zestawy interfejsów API, stają się one interesujące. Usługi G Suite są coraz częściej używane w firmach. Firma Salesforce.com stworzyła obszerną platformę do tworzenia niestandardowych aplikacji biznesowych, dzięki czemu programiści (to Ty!) mogą wykorzystać potencjał Google i Salesforce.com.

Z tego artykułu dowiesz się, jak korzystać z interfejsów API RESTowych danych Google, aby zacząć korzystać z usług typu mashup do użytku biznesowego, nawet jeśli dopiero zaczynasz korzystać z platformy Salesforce.com lub protokołu danych Google. Pomogę Ci skonfigurować środowisko programistyczne, zainstalować istniejącą platformę Salesforce.com i mashup Google, a potem stworzyć własną.

Dzień dobry,

Jeśli jesteś początkującym użytkownikiem Salesforce.com, musisz najpierw założyć konto dewelopera w ADN, czyli Apex Developer Network. Konto dewelopera daje dostęp do w pełni funkcjonalnego konta Salesforce.com, a także do wiki Apex i grup dyskusyjnych.

Następnie wypróbuj Apex Toolkit for Eclipse. Zestaw narzędzi wymaga środowiska Java 1.5 i Eclipse 3.2.2 lub nowszego. Jeśli wiesz, jak korzystać z Eclipse, witryna z aktualizacją oprogramowania do zestawu narzędzi to http://www.adnsandbox.com/eclipsetoolkit/10.0/. Jeśli nie znasz wtyczek Eclipse lub coś poszło nie tak podczas instalacji, wiki Apex zawiera szczegółowe instrukcje instalacji.

Po zainstalowaniu pakietu narzędzi uzyskasz dostęp do treści pomocy Apex zintegrowanych z systemem pomocy Eclipse. W Eclipse kliknij Pomoc | Treści pomocy | Narzędzia Apex dla Eclipse, aby zobaczyć tę treść. Jednym z zasobów pomocy jest krótki samouczek pokazujący, jak utworzyć nowy projekt oraz jak dodać elementy sterujące, klasy i aktywatory. Jeśli nie znasz jeszcze kodu Apex, zapoznaj się z tym samouczkiem i utwórz projekt Apex, zanim przejdziesz dalej.

Eksportowanie wydarzeń do Kalendarza Google

Ron Hess napisał aplikację Kalendarz Google – mashup, która umożliwia eksportowanie wydarzeń z Salesforce.com do Kalendarza Google. Ron napisał też artykuł, który wyjaśnia, jak działa jego mashup. Aplikacja Arkusze Google, którą pokażę Ci później, jest przygotowana po masażu Kalendarza Google Rona. Dzięki Ron!

Jeśli jesteś użytkownikiem Salesforce.com, możesz zintegrować aplikację Kalendarz Google i korzystać z niej bez żadnych instrukcji. Potrzebowałem na początku niewielkiej pomocy, więc zobaczyłem, jak działa aplikacja Rona.

  1. Zainstaluj aplikację:
    • Otwórz stronę łączenie aplikacji Kalendarz Google i kliknij Pobierz teraz.
    • Wpisz dane logowania i kliknij Dalej.
    • Przeczytaj Warunki korzystania z usługi i kliknij Dalej.
    • Na stronie „Sprawdź zawartość pakietu” kliknij Dalej.
    • Wybierz poziom zabezpieczeń i kliknij Dalej.
    • Kliknij Zainstaluj.
  2. Konfigurowanie serwera proxy AJAX.com
    • W menu „Konfiguracja administracyjna” kliknij Ustawienia zabezpieczeń | Zdalne ustawienia witryny.
    • Kliknij Nowa witryna zdalna.
    • W polu „Zdalna witryna” wpisz Google, a w polu „URL witryny zdalnej” wpisz https://www.google.com.
    • Kliknij Zapisz.
  3. Dodaj przycisk „Dodaj do Google” na stronie szczegółów wydarzenia:
    • W menu „Konfiguracja aplikacji” kliknij Dostosuj | Działania | Układy strony zdarzenia.
    • Kliknij Edytuj w wierszu „Układ wydarzenia”.
    • Kliknij dwukrotnie obszar „Przyciski na stronie szczegółów”.
    • Zaznacz „Dodaj do Google” i kliknij strzałkę w prawo (>), aby dodać przycisk.
    • Kliknij OK.
    • Kliknij Zapisz na stronie „Właściwości układu strony”.
  4. Eksportowanie wydarzenia
    • Kliknij Strona główna w lewym górnym rogu, aby wyświetlić kalendarz.
    • Jeśli nie masz żadnych wydarzeń, kliknij New Event (Nowe wydarzenie), aby je utworzyć.
    • Kliknij wydarzenie, aby wyświetlić stronę Szczegóły wydarzenia.
    • Kliknij przycisk Dodaj do Google.
    • Kliknij OK w alercie JavaScript.
    • Zaloguj się przy użyciu nazwy użytkownika i hasła Google.
    • Kliknij Przyznaj dostęp, aby przyznać aplikacji SalesForce uprawnienia do zapisu w Kalendarzu Google.
    • Wyświetl wydarzenie w Kalendarzu Google.

Tworzenie aplikacji Arkusze Google

Dobrze, masz już dość klikania stron Salesforce.com i możesz pisać kod. Uruchom ponownie Eclipse, a zobaczysz, że utworzony przez Ciebie projekt Apex zawiera teraz elementy sterujące systemu R – aplikację Kalendarz Google. Dzieje się tak dlatego, że Apex Toolkit for Eclipse stale synchronizuje się z Salesforce.com – jest całkiem fajny, prawda?

Możesz utworzyć własną aplikację Dane Google, wykorzystując niektóre funkcje mashupów Kalendarza Google, takie jak opcje uwierzytelniania. W dalszej części tej sekcji dowiesz się, jak stworzyć aplikację, która eksportuje kontakty z Salesforce.com do arkusza kalkulacyjnego Google.

Publikowanie prostego elementu S-Control

S-Control to plik hostowany przez Salesforce.com, który uruchamia się w przeglądarce, gdy użytkownik uzyskuje dostęp do aplikacji. Element sterujący może zawierać dowolny typ treści, które można wyświetlić lub uruchomić w przeglądarce, np. HTML, CSS lub JavaScript.

W witrynach Salesforce.com i mashup Google jest sporo ruchomych części, więc pierwszą rzeczą, jaką zrobiłem, jest dodanie przycisku „Eksportuj do Google” na stronie z listą kontaktów, który wywołuje prosty mechanizm S-Control. Upewniam się, że przed zamknięciem JavaScriptu wszystko jest w porządku.

W projekcie Apex kliknij prawym przyciskiem myszy folder „S-Controls” i wybierz Apex | New S-Control. Dodaj nową etykietę S-Control i nazwę export_contacts, pozostaw typ Niestandardowy kod HTML i kliknij Zakończ.

Nowy element S-Control będzie zawierał szkielet pliku HTML. Dodajesz kilka elementów JavaScript w sekcji <head>, ale najpierw możesz wypełnić pole <body>, aby podczas eksportowania kontaktów było coś do wyświetlenia użytkownikowi. Skopiuj ten kod HTML do treści panelu sterowania, aby wyświetlić „oczekujące kropki” i logo Arkuszy Google:

<div id="waiting" align="center" />
  <img src="/img/icon/home32.png" height="64" width="64" />
  <img src="/img/waiting_dots.gif" alt="Please wait..." title="Please wait..." height="25" width="196" />
  <img src="http://docs.google.com/images/doclist/logo_docs.gif" />
  <p><h3>Exporting contacts to Google Spreadsheets, please wait...</h3></p>

</div>

Teraz możesz opublikować element sterujący i skonfigurować przycisk, który go wywoła.

  1. Użyj Eclipse do opublikowania pliku S-Control:
    • Kliknij prawym przyciskiem myszy projekt Apex i wybierz Apex | Synchronizuj z Salesforce.
    • Znajdź nowy element S-Control w drzewie katalogów, kliknij go prawym przyciskiem myszy i wybierz Zastąp pilota i opublikuj na serwerze.
    • Jeśli nie możesz znaleźć swojego narzędzia S-Control, pakiet Apex Toolkit mógł już go przesłać, warto jednak korzystać z perspektywy synchronizacji, by mieć pewność, że na serwerze działa najnowszy kod.
  2. W interfejsie użytkownika Salesforce.com określ przycisk, który będzie wywoływać ten element S-Control:
    • W menu „Konfiguracja aplikacji” kliknij Dostosuj | Kontakty | Przyciski i linki.
    • W sekcji „Przyciski niestandardowe i linki” kliknij Nowy.
    • Wpisz etykietę Eksportuj do Google, a jako jej wartość pozostaw Eksport_do_Google.
    • Jako typ reklamy wybierz „Przycisk listy”.
    • Jako źródło treści wybierz „Niestandardowa kontrola rodzicielska”.
    • Jako działanie wybierz „Wyświetl w istniejącym oknie z paskiem bocznym”.
    • W menu Niestandardowe elementy sterujące wybierz „export_contacts”.
  3. Dodaj przycisk do listy kontaktów:
    • W menu „Konfiguracja aplikacji” kliknij Dostosuj | Kontakty | Układy wyszukiwania.
    • Kliknij Edytuj w wierszu „Widok listy kontaktów”.
    • Zaznacz „Eksportuj do Google” i kliknij strzałkę w prawo (>), by dodać przycisk.
    • Kliknij Zapisz.
  4. Przeprowadź jazdę próbną:
    • Kliknij kartę Kontakty.
    • Wybierz „Wszystkie kontakty” jako widok i kliknij Idź!
    • Kliknij błyszczący przycisk Eksportuj do Google.
    • Obejrzyj film „waiting_dots”, ale nie oczekuj, że wydarzy się coś jeszcze.

Interakcja z arkuszami kalkulacyjnymi Google

Jeśli spojrzysz na źródło kompozycji w Kalendarzu Google, zobaczysz, że plik gcal_snippet.scf zawiera abstrakcję do serwera Kalendarza Google. Aby korzystać z Arkuszy kalkulacyjnych Google, musisz utworzyć podobny plik na serwerze Arkuszy Google. Ponownie użyłem kodu Rona Hessa do korzystania z serwera proxy Salesforce.com i uwierzytelnienia w Google AuthSub oraz zastąpiono funkcję, która zapisuje wydarzenia w Kalendarzu Google taką, która zapisuje informacje w Arkuszach Google. Pełne źródło tego pliku jest dostępne w gspreadsheet_snippet.scf.

Następnie dodałem kod JavaScript do nagłówka export_contacts.scf, by wysłać zapytanie do Salesforce.com i zapisać je w arkuszu kalkulacyjnym Google. Pobieranie danych z witryny Salesforce.com jest łatwe. Wystarczy utworzyć zapytanie i udostępnić funkcję wywołania zwrotnego, która zostanie wykonana po zwróceniu danych. Na przykład:

  var query = 'Select FirstName, LastName, Phone From Contact';
  var queryResult = sforce.connection.query(query, queryCallback);

Gdy już uzyskasz dane kontaktowe z Salesforce.com, musisz określić, gdzie chcesz je wyeksportować. W protokole REST R Data każdy arkusz można zidentyfikować za pomocą unikalnego adresu URL. Listę arkuszy kalkulacyjnych użytkownika (i powiązanych z nimi adresów URL) możesz uzyskać, wysyłając zapytanie do adresu URL metafeedu: http://spreadsheets.google.com/feeds/spreadsheets/private/full. Poniższa metoda powtarza te iteracje, szukając arkusza kalkulacyjnego o określonym tytule. Gdy znajdzie odpowiedni arkusz kalkulacyjny, najpierw otrzymuje listę arkuszy, a potem zwraca adres URL kanału pierwszego arkusza.

function getCellFeedUrl() {
  var SPREADSHEET_TITLE = 'Salesforce.com Contacts';
  var WORKSHEET_REL = 'http://schemas.google.com/spreadsheets/2006#worksheetsfeed';
  var CELLSFEED_REL = 'http://schemas.google.com/spreadsheets/2006#cellsfeed';

  // Query to find the spreadheet called "Salesforce.com Contacts"
  var spreadsheets = g.getFeed('http://spreadsheets.google.com/feeds/spreadsheets/private/full');
  var entries = g.getEntryList(spreadsheets);
  for (var e in entries) {
    if (g.getTitle(entries[e]) == SPREADSHEET_TITLE) {
      var worksheetsFeedUrl = g.link(entries[e],WORKSHEET_REL);
      var worksheets = g.getFeed(worksheetsFeedUrl);
      var worksheetEntries = g.getEntryList(worksheets);
      return g.link(worksheetEntries[0], CELLSFEED_REL);
    }
  }
}

Więcej informacji o plikach danych dostępnych w interfejsie API danych arkuszy kalkulacyjnych Google znajdziesz w przewodniku.

Funkcja queryCallback używa metody getCellFeedUrl, aby znaleźć adres URL kanału komórek na potrzeby wysyłania żądań aktualizacji komórek, i zapisuje informacje kontaktowe pojedynczo.

function queryCallback(queryResult) {
  var cellFeedUrl = getCellFeedUrl();
  var contacts = queryResult.getArray('records');
  for (var i=0; i<contacts.length; i++) {
    g.updateCell(cellFeedUrl, i+1, 1, contacts[i].LastName + ", " + contacts[i].FirstName);
    g.updateCell(cellFeedUrl, i+1, 2, contacts[i].Phone);
  }
  
  jumpback(); // Return to the contacts page when your done
}

Metoda updateCell znajduje się w elemencie S-Control gspreadsheet_snippet.scf. Metoda uzyskuje adres URL edycji komórki w danym wierszu i kolumnie, a następnie wysyła komunikat HTTP PUT zawierający przedstawione dane zaktualizowanej komórki Google:

GoogleSpreadsheet.prototype.updateCell = function(cellsFeedUrl, row, column, content ) {
  var cellEntry = this.getFeed(cellsFeedUrl+'/R'+row+'C'+column);
  var cellEditUrl = this.link(cellEntry,'edit');

  var newCellEntry = "<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'>" +
      "<atom:category scheme='http://schemas.google.com/spreadsheets/2006' " +
      "term='http://schemas.google.com/spreadsheets/2006#cell' />" +
      "<gs:cell xmlns:gs='http://schemas.google.com/spreadsheets/2006' " +
      "row='" + row + "' col='" + column + "' inputValue='" + content + "' />" +
      "</atom:entry>";

  this.putEntry(cellEditUrl, newCellEntry);
} 

Więcej informacji o aktualizowaniu komórek za pomocą interfejsu Google Arkusze danych API znajdziesz w przewodniku dla programistów.

Interfejs API danych Arkuszy kalkulacyjnych Google używa subdomeny https://spreadsheets.google.com, więc zanim powyższy kod zadziała, skonfiguruj serwer proxy AJAX.com i dodaj https://spreadsheets.google.com.

Musisz też otworzyć Dokumenty Google i utworzyć nowy arkusz kalkulacyjny zawierający dane. Pamiętaj, aby zapisać go jako Kontakty Salesforce.com.

Po przesłaniu tych elementów sterujących można wyeksportować dane kontaktowe do arkusza kalkulacyjnego Google. A co wtedy? Dzięki swojej nowej znajomości interfejsów Salesforce.com i interfejsów API danych Google możesz też napisać kod służący do importowania danych kontaktowych z Arkuszy Google do Salesforce.com.

Podsumowanie

Ten artykuł w ogóle pokazuje, jak to działa, ale teraz wiesz już wszystko na temat Salesforce.com i interfejsów API danych Google. Pomyśl o wszystkich aplikacjach, które możesz wykorzystać, aby wykorzystać te zaawansowane systemy. Rodzina interfejsów API danych Google stale się powiększa, udostępniając więcej informacji do wykorzystania w aplikacjach, a platforma Salesforce.com udostępnia wiele przydatnych narzędzi, które nie zostały omówione w tym artykule. Szukam Twojej mashupu dla firm w AppExchange.

Miłego kodowania!

Zasoby