novembre 2007
Introduction
Salesforce.com et Google hébergent des applications "Software as a Service" populaires. Les deux organisations fournissent des API qui permettent aux développeurs d'accéder aux grands magasins de données qui alimentent ces applications. Les choses commencent à devenir intéressantes lorsque nous combinons les deux ensembles d'API. G Suite est de plus en plus utilisé dans les entreprises, et Salesforce.com a développé une plate-forme complète pour créer des applications métier personnalisées. Les développeurs (vous !) ont donc de nombreuses opportunités de combiner la puissance de Google et de Salesforce.com.
Cet article vous explique comment utiliser les API Google Data RESTful pour commencer à créer des mashups d'entreprise, même si vous débutez avec la plate-forme Salesforce.com ou le protocole Google Data. Je vais vous aider à configurer votre environnement de développement, à installer un mashup Salesforce.com et Google existant, puis à écrire le vôtre.
Bonjour, Salesforce.com !
Si vous êtes un débutant sur Salesforce.com comme moi, vous devrez commencer par vous inscrire à un compte de développeur sur ADN, l'Apex Developer Network. Le compte de développeur vous donne accès à un compte Salesforce.com complet, ainsi qu'au wiki Apex et aux forums de discussion.
Vous devez ensuite obtenir le kit d'outils Apex pour Eclipse. La boîte à outils nécessite Java 1.5 et Eclipse 3.2.2 ou version ultérieure. Si vous êtes familier avec Eclipse, le site de mise à jour logicielle pour le kit d'outils est http://www.adnsandbox.com/eclipsetoolkit/10.0/
. Si vous n'êtes pas familiarisé avec les plug-ins Eclipse ou si un problème survient lors de l'installation, le wiki Apex inclut des instructions d'installation détaillées.
Une fois le kit d'outils installé, vous pouvez accéder au contenu d'aide Apex intégré au système d'aide d'Eclipse. Dans Eclipse, accédez à Help | Help Contents | Apex Toolkit for Eclipse pour afficher ce contenu. L'une des ressources d'aide est un tutoriel de démarrage rapide qui vous montre comment créer un projet et ajouter des contrôles S, des classes et des déclencheurs. Si vous n'avez jamais travaillé avec du code Apex, vous devez suivre ce tutoriel et créer un projet Apex avant de continuer.
Exporter des événements vers Google Agenda
Ron Hess a écrit une application Google Calendar Mash-up qui vous permet d'exporter des événements de Salesforce.com vers Google Agenda. Ron a également écrit un article qui explique le fonctionnement de son mashup. L'application Google Sheets que je vais vous montrer comment créer plus tard est inspirée du mashup Google Agenda de Ron. Merci Ron !
Si vous êtes un utilisateur expérimenté de Salesforce.com, vous pouvez probablement intégrer et utiliser l'application Google Agenda de Ron sans aucune instruction. J'ai eu besoin d'un peu d'aide au début. Voici ce que j'ai fait pour voir l'application de Ron en action.
- Installez l'application :
- Accédez à la page Google Calendar Mash-up et cliquez sur Get It Now (Obtenir maintenant).
- Saisissez vos identifiants ADN, puis cliquez sur Continuer.
- Lisez les conditions d'utilisation, puis cliquez sur Continuer.
- Cliquez sur Suivant sur la page "Examiner le contenu du package".
- Choisissez un niveau de sécurité, puis cliquez sur Suivant.
- Cliquez sur Installer.
- Configurer le proxy AJAX Salesforce.com
- Dans le menu "Administration Setup" (Configuration de l'administration), cliquez sur Security Controls | Remote Site Settings (Contrôles de sécurité | Paramètres des sites distants).
- Cliquez sur New Remote Site (Nouveau site distant).
- Saisissez Google comme nom du site distant et https://www.google.com comme URL du site distant.
- Cliquez sur Enregistrer.
- Ajoutez le bouton "Ajouter à Google" à la page d'informations sur l'événement :
- Dans le menu "Configuration de l'application", cliquez sur Personnaliser | Activités | Mises en page des pages d'événements.
- Cliquez sur Modifier dans la ligne "Mise en page de l'événement".
- Double-cliquez sur la zone "Boutons de la page d'informations".
- Mettez en surbrillance "Ajouter à Google", puis cliquez sur la flèche vers la droite (>) pour ajouter le bouton.
- Cliquez sur OK.
- Cliquez sur Enregistrer sur la page "Propriétés de la mise en page".
- Exporter un événement
- Cliquez sur Accueil en haut à gauche pour afficher votre agenda.
- Si vous n'avez aucun événement, cliquez sur Nouvel événement pour en créer un.
- Cliquez sur un événement pour afficher la page "Détails de l'événement".
- Cliquez sur le bouton Ajouter à Google.
- Cliquez sur OK dans l'alerte JavaScript.
- Connectez-vous à l'aide du nom d'utilisateur et du mot de passe de votre compte Google.
- Cliquez sur Accorder l'accès pour autoriser l'application Salesforce à écrire dans votre agenda Google.
- Affichez l'événement dans votre agenda Google Agenda.
Créer une application Google Sheets
Vous en avez probablement assez de cliquer sur les pages Salesforce.com et vous êtes prêt à écrire du code. Relancez Eclipse. Vous verrez que le projet Apex que vous avez créé contient désormais les S-Controls de l'application Google Agenda de Ron. En effet, Apex Toolkit for Eclipse se synchronise constamment avec Salesforce.com. Plutôt cool, non ?
Vous pouvez créer votre propre application Google Data en réutilisant certaines fonctionnalités du mashup Google Agenda, comme les contrôles d'authentification. Dans le reste de cette section, je vais vous montrer comment créer une application qui exporte vos contacts Salesforce.com dans une feuille de calcul Google.
Publier un contrôle S simple
Un contrôle S est un fichier hébergé par Salesforce.com et exécuté dans les navigateurs Web lorsque les utilisateurs accèdent à votre application. Un contrôle S peut contenir n'importe quel type de contenu que vous pouvez afficher ou exécuter dans un navigateur Web, tel que HTML, CSS ou JavaScript.
Un mashup Salesforce.com et Google comporte de nombreux éléments mobiles. La première chose que j'ai faite a donc été d'ajouter un bouton "Exporter vers Google" à la page de la liste des contacts qui appelle un simple S-Control. Cela m'a permis de m'assurer que toute la plomberie était correcte avant de me lancer dans le JavaScript.
Dans votre projet Apex, effectuez un clic droit sur le dossier "S-Controls", puis sélectionnez Apex | New S-Control (Apex | Nouveau S-Control). Attribuez à la nouvelle commande S-Control le libellé et le nom export_contacts, conservez le type HTML personnalisé et cliquez sur Terminer.
Le nouveau S-Control contiendra un fichier HTML squelette. Vous allez ajouter beaucoup de code JavaScript dans la section <head>, mais vous pouvez d'abord remplir la section <body> pour que l'utilisateur ait quelque chose à voir pendant l'exportation des contacts. Copiez ce code HTML dans le corps de votre S-Control pour afficher les points d'attente et un logo Google Sheets :
<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>
Vous pouvez maintenant publier le contrôle S et configurer un bouton qui l'appellera.
- Utilisez Eclipse pour publier le fichier S-Control :
- Effectuez un clic droit sur votre projet Apex, puis sélectionnez Apex | Synchronize with Salesforce (Apex | Synchroniser avec Salesforce).
- Recherchez votre nouvelle commande S-Control dans l'arborescence des répertoires, effectuez un clic droit dessus, puis sélectionnez Remplacer la commande à distance et publier sur le serveur.
- Si vous ne trouvez pas votre S-Control, il est possible que le kit d'outils Apex l'ait déjà importé pour vous. Toutefois, nous vous recommandons d'utiliser la perspective de synchronisation pour vous assurer que le dernier code est exécuté sur le serveur.
- Utilisez l'interface utilisateur Salesforce.com pour définir un bouton qui appellera ce S-Control :
- Dans le menu "App Setup" (Configuration de l'application), cliquez sur Customize | Contacts | Buttons and Links (Personnaliser | Contacts | Boutons et liens).
- Dans la section "Boutons et liens personnalisés", cliquez sur Nouveau.
- Saisissez Export to Google (Exporter vers Google) comme libellé et conservez Export_to_Google comme nom.
- Sélectionnez "Bouton de liste" comme type d'affichage.
- Choisissez "Contrôle S personnalisé" comme source de contenu.
- Choisissez "Afficher dans la fenêtre existante avec barre latérale" comme comportement.
- Sélectionnez "export_contacts" dans le menu "Custom S-Controls" (Contrôles S personnalisés).
- Ajoutez le bouton à la liste des contacts :
- Dans le menu "Configuration de l'application", cliquez sur Personnaliser | Contacts | Mise en page de la recherche.
- Cliquez sur Modifier sur la ligne "Vue Liste des contacts".
- Mettez en surbrillance "Exporter vers Google", puis cliquez sur la flèche vers la droite (>) pour ajouter le bouton.
- Cliquez sur Enregistrer.
- Essayez-le :
- Cliquez sur l'onglet Contacts.
- Sélectionnez "Tous les contacts" comme vue, puis cliquez sur Go! (C'est parti !).
- Cliquez sur le nouveau bouton Exporter vers Google.
- Regardez les "waiting_dots" (points d'attente), mais ne vous attendez à rien d'autre.
Interagir avec des feuilles de calcul Google
Si vous examinez la source du mashup Google Agenda, vous verrez que le fichier gcal_snippet.scf contient une abstraction pour un serveur Google Agenda. Pour interagir avec Google Sheets, vous devez créer un fichier similaire pour un serveur Google Sheets. J'ai réutilisé le code de Ron Hess pour utiliser le proxy AJAX Salesforce.com et m'authentifier avec Google AuthSub. J'ai remplacé la fonction qui écrit les événements dans Google Agenda par une fonction qui écrit les informations dans Google Sheets. La source complète de ce fichier est disponible dans gspreadsheet_snippet.scf.
J'ai ensuite ajouté du code JavaScript au contrôle S-Control export_contacts.scf pour interroger Salesforce.com et obtenir des informations sur les contacts, puis les écrire dans une feuille de calcul Google. Il est facile d'extraire des données de Salesforce.com. Il vous suffit de créer une requête et de fournir une fonction de rappel à exécuter lorsque les données sont renvoyées. Exemple :
var query = 'Select FirstName, LastName, Phone From Contact'; var queryResult = sforce.connection.query(query, queryCallback);
Une fois que vous avez obtenu les coordonnées depuis Salesforce.com, vous devez déterminer où les exporter. Dans le protocole RESTful Google Data, chaque feuille de calcul peut être identifiée par une URL unique. Pour obtenir la liste des feuilles de calcul d'un utilisateur (et les URL associées), interrogez l'URL du métaflux : http://spreadsheets.google.com/feeds/spreadsheets/private/full
. La méthode suivante itère ces feuilles de calcul et recherche une feuille de calcul avec un titre spécifique. Lorsqu'il trouve la bonne feuille de calcul, il obtient d'abord la liste des feuilles de calcul, puis renvoie l'URL du flux de cellules pour la première feuille de calcul.
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); } } }
Pour en savoir plus sur les flux disponibles dans l'API Data de Google Sheets, consultez le Guide de référence.
La fonction queryCallback
utilise la méthode getCellFeedUrl
pour trouver l'URL du flux de cellules nécessaire à l'envoi de requêtes de mise à jour des cellules, puis écrit les informations de contact dans une cellule à la fois.
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 }
La méthode updateCell
existe dans le contrôle S gspreadsheet_snippet.scf. La méthode récupère l'URL de modification de la cellule dans la ligne et la colonne indiquées, puis envoie un message HTTP PUT
contenant la représentation Google Data de la cellule mise à jour :
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); }
Pour en savoir plus sur la mise à jour des cellules avec l'API Google Spreadsheets Data, consultez le guide du développeur.
L'API Data Google Sheets utilise le sous-domaine https://spreadsheets.google.com
. Par conséquent, pour que le code ci-dessus fonctionne, vous devez configurer le serveur proxy AJAX Salesforce.com et ajouter https://spreadsheets.google.com
.
Vous devrez également accéder à Google Docs et créer une feuille de calcul pour stocker les données. Veillez à l'enregistrer sous Contacts Salesforce.com.
Une fois ces S-Controls importés, vous pourrez exporter vos coordonnées dans une feuille de calcul Google. Et dans l'autre sens ? Grâce à vos nouvelles connaissances sur les API de données Salesforce.com et Google, vous pouvez également écrire du code pour importer des informations de contact depuis des feuilles de calcul Google dans Salesforce.com.
Conclusion
Cet article n'a fait qu'effleurer le sujet, mais maintenant que vous êtes familiarisé avec la plate-forme Salesforce.com et les API Google Data, imaginez toutes les applications que vous pouvez écrire pour exploiter ces systèmes puissants. La famille d'API Google Data ne cesse de s'étendre, en exposant davantage d'informations que vous pouvez exploiter dans vos applications. La plate-forme Salesforce.com propose de nombreux outils utiles qui n'ont pas été abordés dans cet article. J'attends avec impatience votre prochain mashup d'entreprise sur AppExchange.
À vous de jouer !