ноябрь 2007 г.
Введение
Salesforce.com и Google размещают популярные приложения «Программное обеспечение как услуга», и обе организации предоставляют API-интерфейсы, которые позволяют разработчикам получать доступ к большим хранилищам данных, на которых работают эти приложения. Все становится интереснее, когда мы объединяем оба набора API-интерфейсов. G Suite по-прежнему все больше и больше используется в корпоративных условиях, а Salesforce.com создала обширную платформу для создания пользовательских бизнес-приложений, поэтому у разработчиков (это вы!) есть много возможностей объединить мощь Google и Salesforce.com. .
В этой статье показано, как использовать RESTful API данных Google, чтобы начать создавать корпоративные гибридные приложения, даже если вы только начинаете работать с платформой Salesforce.com или протоколом данных Google. Я помогу вам настроить среду разработки, установить существующий мэшап Salesforce.com и Google, а затем написать свой собственный.
Здравствуйте, Salesforce.ru!
Если вы новичок в Salesforce.com, как и я, вам нужно начать с регистрации учетной записи разработчика в ADN, Apex Developer Network. Учетная запись разработчика дает вам полнофункциональную учетную запись Salesforce.com, а также доступ к вики Apex и форумам обсуждений .
Затем вам нужно получить набор инструментов Apex для Eclipse. Инструментарий требует Java 1.5 и Eclipse 3.2.2 или выше. Если вы знакомы с Eclipse, сайт обновления программного обеспечения для набора инструментов находится по адресу http://www.adnsandbox.com/eclipsetoolkit/10.0/
. Если вы не знакомы с подключаемыми модулями Eclipse или что-то пошло не так во время установки, вики Apex содержит подробные инструкции по установке .
После установки инструментария вы можете получить доступ к справочному содержимому Apex, интегрированному в справочную систему Eclipse. В Eclipse выберите Справка | Содержание справки | Apex Toolkit для Eclipse , чтобы увидеть это содержимое. Одним из справочных ресурсов является краткое руководство, которое покажет вам, как создать новый проект и добавить элементы S-Control, классы и триггеры. Если вы раньше не работали с кодом Apex, вам следует пройти это руководство и создать проект Apex, прежде чем двигаться дальше.
Экспорт событий в Календарь Google
Рон Хесс написал приложение Google Calendar Mash-up , которое позволяет экспортировать события из Salesforce.com в Google Calendar. Рон также написал статью , в которой объясняет, как работает его мэшап. Приложение Google Spreadsheets, которое я покажу вам позже, создано по образцу мэшапа Google Calendar Рона. Спасибо Рон!
Если вы являетесь опытным пользователем Salesforce.com, вы, вероятно, сможете интегрировать и использовать приложение Рона Google Calendar без каких-либо инструкций. Сначала мне нужна была небольшая помощь, поэтому вот что я сделал, чтобы увидеть приложение Рона в действии.
- Установите приложение:
- Перейдите на страницу Google Calendar Mash-up и нажмите «Получить сейчас» .
- Введите свои учетные данные ADN и нажмите «Продолжить» .
- Ознакомьтесь с Условиями и положениями и нажмите «Продолжить» .
- Нажмите « Далее » на странице «Изучить содержимое пакета».
- Выберите уровень безопасности и нажмите «Далее» .
- Щелкните Установить .
- Настройка прокси-сервера Salesforce.com AJAX
- В меню «Настройка администрирования» щелкните Элементы управления безопасностью | Настройки удаленного сайта .
- Нажмите Новый удаленный сайт .
- Введите Google в качестве «Имени удаленного сайта», а в качестве «URL-адреса удаленного сайта» используйте https://www.google.com .
- Нажмите Сохранить .
- Добавьте кнопку «Добавить в Google» на страницу сведений о событии:
- В меню «Настройка приложения» нажмите «Настроить | Деятельность | Макеты страниц событий .
- Нажмите «Изменить» в строке «Макет событий».
- Дважды щелкните область «Кнопки страницы сведений».
- Выделите «Добавить в Google» и нажмите стрелку вправо (>), чтобы добавить кнопку.
- Нажмите ОК .
- Нажмите « Сохранить» на странице «Свойства макета страницы».
- Экспорт события
- Нажмите «Домой» в левом верхнем углу, чтобы просмотреть свой календарь.
- Если у вас нет событий, нажмите «Новое событие» , чтобы создать его.
- Щелкните событие, чтобы просмотреть страницу сведений о событии.
- Нажмите кнопку Добавить в Google .
- Нажмите «ОК» в предупреждении JavaScript.
- Войдите под своим именем пользователя и паролем Google.
- Нажмите «Предоставить доступ» , чтобы предоставить приложению SalesForce доступ для записи в ваш Календарь Google.
- Просмотр мероприятия в вашем Google Календаре
Создание приложения Google Spreadsheets
Хорошо, вы, вероятно, устали щелкать страницы Salesforce.com и готовы написать код. Запустите Eclipse еще раз, и вы увидите, что созданный вами проект Apex теперь содержит S-Controls для приложения Google Calendar Рона. Это связано с тем, что Apex Toolkit для Eclipse постоянно синхронизируется с Salesforce.com — здорово, правда?
Вы можете создать собственное приложение Google Data, повторно используя некоторые функции Google Calendar Mash-up, например элементы управления аутентификацией. В оставшейся части этого раздела я покажу вам, как создать приложение, которое экспортирует ваши контакты Salesforce.com в электронную таблицу Google.
Публикация простого S-Control
S-Control — это файл, который размещается на сайте Salesforce.com и выполняется в веб-браузерах, когда пользователи обращаются к вашему приложению. S-Control может содержать контент любого типа, который вы можете отображать или запускать в веб-браузере, например HTML, CSS или JavaScript.
В мэшапе Salesforce.com и Google довольно много движущихся частей, поэтому первое, что я сделал, — это добавил кнопку «Экспорт в Google» на страницу со списком контактов, которая вызывает простой S-Control — просто чтобы убедиться, что все сантехника была правильной до того, как я погрузился по колено в JavaScript.
В проекте Apex щелкните правой кнопкой мыши папку «S-Controls» и выберите Apex | Новый S-контроль . Дайте новому S-Control метку и имя export_contacts , оставьте тип Custom HTML и нажмите Finish .
Новый S-Control будет содержать каркас HTML-файла. Вы добавите кучу JavaScript в <head>, но вы можете сначала заполнить <body>, чтобы было что показать пользователю во время экспорта контактов. Скопируйте этот HTML-код в тело вашего S-Control, чтобы отобразить «точки ожидания» и логотип Google Spreadsheets:
<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>
Теперь вы можете опубликовать S-Control и настроить кнопку, которая будет его вызывать.
- Используйте Eclipse для публикации файла S-Control:
- Щелкните правой кнопкой мыши проект Apex и выберите Apex | Синхронизируйте с Salesforce .
- Найдите новый S-Control в дереве каталогов, щелкните его правой кнопкой мыши и выберите «Переопределить удаленное управление и опубликовать на сервере ».
- Если вы не можете найти свой S-Control, возможно, Apex Toolkit уже загрузил его для вас, но рекомендуется использовать перспективу синхронизации, чтобы убедиться, что на сервере работает самый последний код.
- Используйте пользовательский интерфейс Salesforce.com, чтобы определить кнопку, которая будет вызывать этот S-Control:
- В меню «Настройка приложения» нажмите «Настроить | Контакты | Кнопки и ссылки .
- В разделе «Пользовательские кнопки и ссылки» нажмите «Создать» .
- Введите «Экспорт в Google» в качестве ярлыка и оставьте имя «Экспорт_в_Google» .
- Выберите «Кнопка списка» в качестве типа отображения.
- Выберите «Пользовательский S-Control» в качестве источника контента.
- Выберите «Отображать в существующем окне с боковой панелью» в качестве поведения.
- Выберите «export_contacts» в меню Custom S-Controls.
- Добавьте кнопку в список контактов:
- В меню «Настройка приложения» нажмите «Настроить | Контакты | Поиск макетов .
- Нажмите « Изменить» в строке «Список контактов».
- Выделите «Экспорт в Google» и нажмите стрелку вправо (>), чтобы добавить кнопку.
- Нажмите Сохранить .
- Возьмите его на тест-драйв:
- Щелкните вкладку Контакты .
- Выберите «Все контакты» в качестве вида и нажмите «Перейти»! .
- Нажмите на новую блестящую кнопку «Экспорт в Google» .
- Следите за «waiting_dots», но не ожидайте, что произойдет что-то еще.
Взаимодействие с таблицами Google
Если вы посмотрите на исходный код Google Calendar Mash-up, вы увидите, что файл gcal_snippet.scf содержит абстракцию для сервера Google Calendar. Для взаимодействия с таблицами Google вам потребуется создать аналогичный файл для сервера таблиц Google. Я повторно использовал код Рона Хесса для использования AJAX-прокси Salesforce.com и аутентификации с помощью Google AuthSub , а также заменил функцию, которая записывает события в Календарь Google, на функцию, которая записывает информацию в электронные таблицы Google. Полный исходный код этого файла доступен в файле gspreadsheet_snippet.scf .
Затем я добавил JavaScript в S-Control export_contacts.scf , чтобы запросить у Salesforce.com контактную информацию и записать ее в электронную таблицу Google. Получить данные из Salesforce.com очень просто. Просто создайте запрос и предоставьте функцию обратного вызова, которая будет выполняться при возврате данных. Например:
var query = 'Select FirstName, LastName, Phone From Contact'; var queryResult = sforce.connection.query(query, queryCallback);
Когда у вас есть контактная информация с Salesforce.com, вам нужно выяснить, куда ее экспортировать. В протоколе RESTful Google Data каждая электронная таблица может быть идентифицирована уникальным URL-адресом. Вы можете получить список электронных таблиц пользователя (и связанных с ними URL-адресов), запросив URL-адрес метаканала: http://spreadsheets.google.com/feeds/spreadsheets/private/full
. Следующий метод выполняет итерацию по этим электронным таблицам в поисках таблицы с определенным заголовком. Когда он находит правильную электронную таблицу, он сначала получает список рабочих листов, а затем возвращает URL-адрес фида ячеек для первого рабочего листа.
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); } } }
Дополнительную информацию о фидах, доступных в API данных Google Spreadsheets, можно найти в Справочном руководстве .
Функция queryCallback
использует метод getCellFeedUrl
для поиска URL-адреса канала ячеек, необходимого для отправки запросов на обновление ячеек, а затем записывает контактную информацию по ячейкам за раз.
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 }
Метод updateCell
существует в gspreadsheet_snippet.scf S-Control. Метод получает URL-адрес редактирования ячейки в заданной строке и столбце, а затем отправляет HTTP-сообщение PUT
, содержащее представление данных 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); }
Дополнительную информацию о том, как обновлять ячейки с помощью API данных Google Spreadsheets, можно найти в Руководстве разработчика .
API данных Google Spreadsheets использует поддомен https://spreadsheets.google.com
поэтому, прежде чем приведенный выше код заработает, вам необходимо настроить прокси-сервер Salesforce.com AJAX и добавить https://spreadsheets.google.com
.
Вам также нужно будет перейти в Google Docs и создать новую электронную таблицу для хранения данных. Убедитесь, что вы сохранили его как Контакты Salesforce.com .
После загрузки этих S-Controls вы сможете экспортировать свою контактную информацию в электронную таблицу Google. А как насчет другого пути? Благодаря новым знаниям о Salesforce.com и API данных Google вы также можете написать код для импорта контактной информации из таблиц Google в Salesforce.com.
Заключение
В этой статье мы затронули только самую суть, но теперь, когда вы освоили платформу Salesforce.com и API данных Google, подумайте обо всех приложениях, которые вы можете написать для использования этих мощных систем. Семейство API-интерфейсов Google Data постоянно расширяется, предоставляя вам больше информации для использования в ваших приложениях, а платформа Salesforce.com предлагает множество полезных инструментов , которые не были рассмотрены в этой статье. Я буду искать ваш следующий корпоративный мэшап на AppExchange .
Удачного кодирования!