REST per il commerciale per i viaggi: utilizzo dei dati di Google su Salesforce.com

Lane LiaBraaten, Google Developer Programs
Novembre 2007

Introduzione

Salesforce.com e Google ospitano le famose applicazioni "Software as a Service" ed entrambe le organizzazioni forniscono API che consentono agli sviluppatori di accedere ai grandi archivi di dati su cui si basano queste applicazioni. Inoltre, le cose possono diventare interessanti quando combiniamo entrambi i set di API. G Suite continua a essere utilizzato sempre di più nel contesto aziendale e Salesforce.com ha creato una vasta piattaforma per la creazione di applicazioni aziendali personalizzate, per cui gli sviluppatori hanno la possibilità di combinare la potenza di Google e Salesforce.com con molte opportunità.

Questo articolo spiega come utilizzare le API di dati di Google RESTful per iniziare a creare mashup aziendali, anche se hai appena iniziato a utilizzare la piattaforma Salesforce.com o il protocollo Google Data. Ti aiuterò a configurare il tuo ambiente di sviluppo, installare un mashup Google.com e Salesforce.com esistente e poi scriverne di nuovi.

Buongiorno Salesforce.com.

Se sei un nuovo inserzionista Salesforce.com come me, dovrai innanzitutto creare un account sviluppatore su ADN, la rete di sviluppatori Apex. L'account sviluppatore ti fornisce un account Salesforce.com completo, oltre all'accesso al wiki Apex e alle bacheche di discussione.

Dopodiché vorrai scaricare il toolkit di Apex per Eclipse. Il toolkit richiede Java 1.5 ed Eclipse 3.2.2 o versioni successive. Se sai come orientarti in Eclipse, il sito di aggiornamento software per il toolkit è http://www.adnsandbox.com/eclipsetoolkit/10.0/. Se non hai dimestichezza con i plug-in Eclipse o se si verificano problemi durante l'installazione, il wiki Apex include istruzioni dettagliate per l'installazione.

Una volta installato il toolkit, puoi accedere ai contenuti della guida Apex integrati nel sistema di assistenza di Eclipse. In Eclipse, visita la Guida | Sommario della guida | Apex Toolkit per Eclipse per visualizzare questi contenuti. Una delle risorse della guida è un tutorial rapido che ti mostra come creare un nuovo progetto e aggiungere controlli S, classi e trigger. Se non hai mai lavorato con codice Apex, dovresti seguire questo tutorial e creare un progetto Apex prima di andare avanti.

Esportazione di eventi in Google Calendar

Ron Hess ha scritto un'applicazione Google Calendar Mash-up che consente di esportare eventi da Salesforce.com in Google Calendar. Ron ha anche scritto un articolo che spiega come funziona il suo mashup. L'applicazione Fogli di lavoro Google che ti mostrerò come creare in seguito sarà modellata sul mashup di Google Calendar di Ron. Grazie, Ron!

Se sei un utente esperto di Salesforce.com, probabilmente puoi integrare e utilizzare l'applicazione Google Calendar di Ron senza alcuna istruzione. All'inizio avevo bisogno di un piccolo aiuto, quindi ecco cosa ho fatto per vedere l'app di Ron in azione.

  1. Installa l'applicazione:
    • Vai alla pagina Google Calendar Mash-up e fai clic su Scarica ora.
    • Inserisci le tue credenziali ADN e fai clic su Continua.
    • Leggi i Termini e condizioni e fai clic su Continua.
    • Fai clic su Avanti nella pagina "Esamina i contenuti del pacchetto".
    • Scegli un livello di sicurezza e fai clic su Avanti.
    • Fai clic su Installa.
  2. Configura il proxy AJAX di Salesforce.com
    • Nel menu "Impostazione amministrazione", fai clic su Controlli di sicurezza | Impostazioni sito remoto.
    • Fai clic su Nuovo sito remoto.
    • Inserisci Google come "Nome sito remoto" e, per "URL sito remoto", utilizza https://www.google.com.
    • Fai clic su Salva.
  3. Aggiungi il pulsante "Aggiungi a Google" alla pagina Dettagli evento:
    • Nel menu "Impostazione app", fai clic su Personalizza | Attività | Layout di pagina di eventi.
    • Fai clic su Modifica nella riga "Layout evento".
    • Fai doppio clic sull'area "Pulsanti pagina dettagli".
    • Evidenzia "Aggiungi a Google" e fai clic sulla freccia rivolta verso destra (>) per aggiungere il pulsante.
    • Fai clic su OK.
    • Fai clic su Salva nella pagina "Proprietà layout di pagina".
  4. Esportare un evento
    • Fai clic su Home in alto a sinistra per visualizzare il tuo calendario.
    • Se non sono presenti eventi, fai clic su Nuovo evento per crearne uno.
    • Fai clic su un evento per visualizzare la relativa pagina dei dettagli.
    • Fai clic sul pulsante Aggiungi a Google.
    • Fai clic su OK tramite l'avviso JavaScript.
    • Accedi con il tuo nome utente e la password Google.
    • Fai clic su Concedi accesso per consentire all'applicazione SalesForce di accedere in scrittura al tuo Google Calendar.
    • Visualizza l'evento in Google Calendar

Creazione di un'applicazione per fogli di lavoro Google

Ok, probabilmente sei stanco di fare clic sulle pagine di Salesforce.com e di scrivere codice. Avvia di nuovo Eclipse e noterai che il progetto Apex che hai creato ora contiene l'app S-Controls per l'app Google Calendar di Ron. Il motivo è che Apex Toolkit per Eclipse è sempre in sintonia con Salesforce.com, molto bello, vero?

Puoi creare la tua app di dati Google riutilizzando alcune funzionalità del Mash-up di Google Calendar, ad esempio i controlli di autenticazione. Nel resto di questa sezione ti mostrerò come creare un'app che esporti i tuoi contatti Salesforce.com in un foglio di lavoro Google.

Pubblicazione di un semplice S-Control

Un S-Control è un file ospitato da Salesforce.com ed eseguito nei browser web quando gli utenti accedono alla tua applicazione. Un controllo S può includere qualsiasi tipo di contenuto che è possibile visualizzare o eseguire in un browser web, ad esempio HTML, CSS o JavaScript.

Ci sono alcune parti mobili in un mashup di Salesforce.com e Google, quindi la prima cosa che ho fatto è stato aggiungere un pulsante "Export to Google" (Esporta a Google) alla pagina dell'elenco dei contatti che richiama un semplice controllo S-control, solo per verificare che tutto l'impianto idraulico sia corretto prima che lo inginocchi in JavaScript.

Nel tuo progetto Apex, fai clic con il tasto destro del mouse sulla cartella "S-Controls" e scegli Apex | New S-Control. Assegna al nuovo S-Control un'etichetta e il nome di export_contacts, lascia il tipo Custom HTML e fai clic su Finish (Fine).

Il nuovo S-Control conterrà un file HTML scheletro. Stai aggiungendo un gruppo di JavaScript in <head>, ma puoi inserire prima il tag <body>, quindi c'è qualcosa da mostrare all'utente durante l'esportazione dei contatti. Copia questo codice HTML nel corpo del controllo S per visualizzare i "punti in attesa" e il logo di Fogli 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>

Ora puoi pubblicare il controllo S e configurare un pulsante che lo richiami.

  1. Usa Eclipse per pubblicare il file S-Control:
    • Fai clic con il pulsante destro del mouse sul progetto Apex e seleziona Apex | Sincronizza con Salesforce.
    • Individua il nuovo S-Control nell'albero delle directory, fai clic con il tasto destro del mouse e scegli Sostituisci il telecomando e pubblica sul server.
    • Se non riesci a trovare il tuo S-Control, è possibile che Apex Toolkit lo abbia già caricato per te, ma è una buona idea utilizzare la prospettiva di sincronizzazione per assicurarti che il codice più recente sia in esecuzione sul server.
  2. Utilizza l'interfaccia utente di Salesforce.com per definire un pulsante che richiami questo S-Control:
    • Nel menu "Impostazione app", fai clic su Personalizza | Contatti | Pulsanti e link.
    • Nella sezione "Pulsanti e link personalizzati", fai clic su Nuovo.
    • Inserisci Esporta in Google per l'etichetta e mantieni Export_to_Google come nome.
    • Scegli "Pulsante elenco" come Tipo di visualizzazione.
    • Scegli "Controllo S personalizzato" come origine di contenuto.
    • Scegli "Visualizza nella finestra esistente con barra laterale" come Comportamento.
    • Seleziona "export_contacts" dal menu S-Control personalizzati.
  3. Aggiungi il pulsante all'elenco dei contatti:
    • Nel menu "Configurazione app", fai clic su Personalizza | Contatti | Cerca layout.
    • Fai clic su Modifica nella riga "Visualizzazione elenco contatti".
    • Seleziona "Esporta in Google" e fai clic sulla freccia rivolta verso destra (>) per aggiungere il pulsante.
    • Fai clic su Salva.
  4. Fai un giro di prova:
    • Fai clic sulla scheda Contatti.
    • Seleziona "Tutti i contatti" come visualizzazione e fai clic su Vai!.
    • Fai clic sul nuovo pulsante Esporta in Google.
    • Guarda il messaggio "waiting_dots", ma non aspettarti che non succeda nulla.

Interazione con i fogli di lavoro Google

Se esamini l'origine del Accedi al calendario di Google Calendar, noterai che il file gcal_snippet.scf contiene un'astrazione per un server di Google Calendar. Per interagire con Fogli di lavoro Google, devi creare un file simile per un server di Fogli Google. Ho riutilizzato il codice di Ron Hess per utilizzare il proxy AJAX di Salesforce.com e l'autenticazione con Google AuthSub e sostituito la funzione che scrive gli eventi in Google Calendar con una che scrive le informazioni nei fogli di lavoro di Google. La fonte completa di questo file è disponibile in gspreadsheet_snippet.scf.

Successivamente, ho aggiunto JavaScript al controllo S export_contacts.scf per richiedere informazioni di contatto su Salesforce.com e scriverle su un foglio di lavoro Google. Ottenere i dati da Salesforce.com è facile. Basta creare una query e fornire una funzione di callback da eseguire quando vengono restituiti i dati. Ad esempio:

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

Una volta in possesso dei dati di contatto di Salesforce.com, devi decidere dove esportarli. Nel protocollo RESTful di Google Data, ogni foglio di lavoro può essere identificato da un URL univoco. Puoi ottenere l'elenco dei fogli di lavoro di un utente (e degli URL associati) eseguendo una query sull'URL del metafeed: http://spreadsheets.google.com/feeds/spreadsheets/private/full. Il metodo seguente esegue l'iterazione tra questi fogli di lavoro, cercando un foglio di lavoro con un titolo specifico. Quando trova il foglio di lavoro corretto, visualizza prima l'elenco dei fogli di lavoro, quindi restituisce l'URL del feed di celle per il primo foglio di lavoro.

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);
    }
  }
}

Ulteriori informazioni sui feed disponibili nell'API di dati di Google Fogli di lavoro sono disponibili nella guida di riferimento.

La funzione queryCallback utilizza il metodo getCellFeedUrl per trovare l'URL del feed delle celle necessario per inviare richieste di aggiornamento delle celle e poi scrive le informazioni di contatto alla volta.

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
}

Il metodo updateCell è presente nel controllo S gspreadsheet_snippet.scf. Il metodo recupera l'URL di modifica della cella nella riga e della colonna specificate, quindi invia un messaggio HTTP PUT contenente la rappresentazione dei dati di Google della cella aggiornata:

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);
} 

Ulteriori informazioni su come aggiornare le celle con l'API di dati di Google Fogli di lavoro sono disponibili nella Guida per gli sviluppatori.

L'API di dati Google Fogli di lavoro utilizza il sottodominio https://spreadsheets.google.com, quindi prima che il codice riportato sopra funzioni il codice, devi configurare il server proxy AJAX di Salesforce.com e aggiungere https://spreadsheets.google.com.

Per conservare i dati, dovrai anche andare su Documenti Google e creare un nuovo foglio di lavoro. Assicurati di salvarlo come Contatti di Salesforce.com.

Dopo aver caricato questi controlli S, potrai esportare le tue informazioni di contatto in un foglio di lavoro Google. E il contrario? Con le tue nuove conoscenze di Salesforce.com e delle API di dati di Google, puoi anche scrivere codice per importare i dati di contatto da Fogli di lavoro Google in Salesforce.com.

Conclusione

Questo articolo si è appena rivelato, ma ora che conosci la piattaforma Salesforce.com e le API di dati di Google, pensa a tutte le applicazioni che puoi scrivere per sfruttare questi potenti sistemi. La famiglia di API di dati di Google è in continua crescita ed espone ulteriori informazioni da sfruttare nelle applicazioni. Inoltre, la piattaforma Salesforce.com offre numerosi strumenti utili che non sono stati trattati in questo articolo. Cercherò il tuo prossimo mashup aziendale in The AppExchange.

Buona programmazione!

Risorse