Tháng 11 năm 2007
Giới thiệu
Salesforce.com và Google lưu trữ các ứng dụng "Phần mềm dưới dạng dịch vụ" phổ biến và cả hai tổ chức này đều cung cấp các API cho phép nhà phát triển truy cập vào các kho dữ liệu lớn hỗ trợ những ứng dụng này. Mọi thứ bắt đầu trở nên thú vị khi chúng ta kết hợp cả hai bộ API. G Suite ngày càng được sử dụng nhiều hơn trong môi trường doanh nghiệp và Salesforce.com đã xây dựng một nền tảng mở rộng để tạo các ứng dụng kinh doanh tuỳ chỉnh, vì vậy, các nhà phát triển (chính là bạn!) có nhiều cơ hội để kết hợp sức mạnh của Google và Salesforce.com.
Bài viết này sẽ hướng dẫn bạn cách sử dụng Google Data API dựa trên REST để bắt đầu tạo các ứng dụng kết hợp dành cho doanh nghiệp, ngay cả khi bạn mới bắt đầu sử dụng nền tảng Salesforce.com hoặc giao thức Google Data. Tôi sẽ giúp bạn thiết lập môi trường phát triển, cài đặt một ứng dụng kết hợp hiện có giữa Salesforce.com và Google, sau đó viết ứng dụng của riêng bạn.
Xin chào, Salesforce.com!
Nếu là người mới sử dụng Salesforce.com như tôi, bạn cần bắt đầu bằng cách đăng ký tài khoản nhà phát triển trên ADN (Mạng lưới nhà phát triển Apex). Tài khoản nhà phát triển cung cấp cho bạn một tài khoản Salesforce.com đầy đủ tính năng, cùng với quyền truy cập vào wiki Apex và bảng thảo luận.
Tiếp theo, bạn sẽ muốn tải Apex Toolkit cho Eclipse. Bộ công cụ này yêu cầu Java 1.5 và Eclipse 3.2.2 trở lên. Nếu bạn biết cách sử dụng Eclipse, thì trang web cập nhật phần mềm cho bộ công cụ này là http://www.adnsandbox.com/eclipsetoolkit/10.0/
. Nếu bạn không quen thuộc với các trình bổ trợ Eclipse hoặc có vấn đề xảy ra trong quá trình cài đặt, thì wiki Apex có hướng dẫn cài đặt chi tiết.
Sau khi cài đặt bộ công cụ này, bạn có thể truy cập vào nội dung trợ giúp về Apex được tích hợp vào hệ thống Trợ giúp của Eclipse. Trong Eclipse, hãy chuyển đến Help | Help Contents | Apex Toolkit for Eclipse (Trợ giúp | Nội dung trợ giúp | Bộ công cụ Apex cho Eclipse) để xem nội dung này. Một trong những tài nguyên trợ giúp là hướng dẫn khởi động nhanh, hướng dẫn này sẽ cho bạn biết cách tạo một dự án mới và thêm S-Control, lớp và trình kích hoạt. Nếu chưa từng làm việc với mã Apex, bạn nên xem hướng dẫn này và tạo một dự án Apex trước khi tiếp tục.
Xuất sự kiện sang Lịch Google
Ron Hess đã viết một ứng dụng Google Calendar Mash-up cho phép bạn xuất các sự kiện từ Salesforce.com sang Lịch Google. Ron cũng viết một bài viết giải thích cách bản phối của anh hoạt động. Ứng dụng Google Trang tính mà tôi sẽ hướng dẫn bạn cách tạo sau này được mô phỏng theo ứng dụng kết hợp Lịch Google của Ron. Cảm ơn Ron!
Nếu là người dùng thành thạo Salesforce.com, thì có thể bạn sẽ tích hợp và sử dụng được ứng dụng Lịch Google của Ron mà không cần hướng dẫn. Lúc đầu, tôi cần một chút trợ giúp, vì vậy, đây là những gì tôi đã làm để xem ứng dụng của Ron hoạt động.
- Cài đặt ứng dụng:
- Truy cập vào trang Google Calendar Mash-up rồi nhấp vào Tải ngay.
- Nhập thông tin đăng nhập ADN của bạn rồi nhấp vào Tiếp tục.
- Đọc Điều khoản và điều kiện rồi nhấp vào Tiếp tục.
- Nhấp vào Tiếp theo trên trang "Kiểm tra nội dung gói".
- Chọn một cấp độ bảo mật rồi nhấp vào Tiếp theo.
- Nhấp vào Install (Cài đặt).
- Định cấu hình proxy AJAX của Salesforce.com
- Trong trình đơn "Thiết lập quản trị", hãy nhấp vào Security Controls | Remote Site Settings (Chế độ kiểm soát bảo mật | Cài đặt trang web từ xa).
- Nhấp vào New Remote Site (Trang web từ xa mới).
- Nhập Google làm "Tên trang web từ xa" và sử dụng https://www.google.com cho "URL trang web từ xa".
- Nhấp vào Lưu.
- Thêm nút "Thêm vào Google" vào trang Chi tiết sự kiện:
- Trong trình đơn "Thiết lập ứng dụng", hãy nhấp vào Tuỳ chỉnh | Hoạt động | Bố cục trang sự kiện.
- Nhấp vào Chỉnh sửa trong hàng "Bố cục sự kiện".
- Nhấp đúp vào khu vực "Nút trên trang chi tiết".
- Đánh dấu "Thêm vào Google" rồi nhấp vào mũi tên phải (>) để thêm nút này.
- Nhấp vào OK.
- Nhấp vào Lưu trên trang "Thuộc tính bố cục trang".
- Xuất một sự kiện
- Nhấp vào Trang chủ ở trên cùng bên trái để xem lịch của bạn.
- Nếu bạn chưa có sự kiện nào, hãy nhấp vào Sự kiện mới để tạo một sự kiện.
- Nhấp vào một sự kiện để xem trang Chi tiết sự kiện.
- Nhấp vào nút Thêm vào Google.
- Nhấp vào OK thông qua cảnh báo JavaScript
- Đăng nhập bằng tên người dùng và mật khẩu Google của bạn.
- Nhấp vào Cấp quyền truy cập để cấp cho ứng dụng SalesForce quyền ghi vào Lịch Google của bạn.
- Xem sự kiện trong Lịch Google
Xây dựng ứng dụng Google Trang tính
Có lẽ bạn đã chán việc nhấp vào các trang Salesforce.com và sẵn sàng viết mã. Khởi động lại Eclipse và bạn sẽ thấy dự án Apex mà bạn đã tạo hiện chứa các S-Control cho ứng dụng Lịch Google của Ron. Điều này là do Apex Toolkit cho Eclipse liên tục đồng bộ hoá với Salesforce.com. Thật tuyệt phải không?
Bạn có thể tạo ứng dụng Google Data của riêng mình bằng cách sử dụng lại một số chức năng của ứng dụng Google Calendar Mash-up, chẳng hạn như các chế độ kiểm soát xác thực. Trong phần còn lại của phần này, tôi sẽ hướng dẫn bạn cách tạo một ứng dụng xuất danh bạ trên Salesforce.com vào một Bảng tính trên Google.
Xuất bản S-Control đơn giản
S-Control là một tệp do Salesforce.com lưu trữ và được thực thi trong trình duyệt web khi người dùng truy cập vào ứng dụng của bạn. S-Control có thể chứa mọi loại nội dung mà bạn có thể hiển thị hoặc chạy trong trình duyệt web, chẳng hạn như HTML, CSS hoặc JavaScript.
Có khá nhiều thành phần trong một bản kết hợp giữa Salesforce.com và Google, vì vậy việc đầu tiên tôi làm là thêm nút "Xuất sang Google" vào trang danh sách liên hệ để gọi một S-Control đơn giản – chỉ để đảm bảo tất cả các thành phần đều chính xác trước khi tôi đi sâu vào JavaScript.
Trong dự án Apex, hãy nhấp chuột phải vào thư mục "S-Controls" rồi chọn Apex | New S-Control (Apex | S-Control mới). Đặt nhãn và tên cho S-Control mới là export_contacts, để nguyên loại là HTML tuỳ chỉnh rồi nhấp vào Hoàn tất.
S-Control mới sẽ chứa một tệp HTML khung. Bạn sẽ thêm một loạt JavaScript vào <head>, nhưng trước tiên, bạn có thể điền vào <body> để người dùng thấy được nội dung trong khi danh bạ đang được xuất. Sao chép HTML này vào nội dung của S-Control để hiển thị "dấu chấm chờ" và biểu trưng của Google Trang tính:
<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>
Giờ đây, bạn có thể xuất bản S-Control và thiết lập một nút sẽ gọi S-Control đó.
- Sử dụng Eclipse để xuất bản tệp S-Control:
- Nhấp chuột phải vào dự án Apex rồi chọn Apex | Synchronize with Salesforce (Apex | Đồng bộ hoá với Salesforce).
- Tìm S-Control mới trong cây thư mục, nhấp chuột phải vào S-Control đó rồi chọn Override remote and publish to server (Ghi đè từ xa và xuất bản lên máy chủ).
- Nếu bạn không tìm thấy S-Control, thì có thể Apex Toolkit đã tải S-Control đó lên cho bạn, nhưng bạn nên sử dụng chế độ xem đồng bộ hoá để đảm bảo mã mới nhất đang chạy trên máy chủ.
- Sử dụng giao diện người dùng Salesforce.com để xác định một nút sẽ gọi S-Control này:
- Trong trình đơn "Thiết lập ứng dụng", hãy nhấp vào Tuỳ chỉnh | Liên hệ | Nút và đường liên kết.
- Trong phần "Nút và đường liên kết tuỳ chỉnh", hãy nhấp vào Mới.
- Nhập Xuất sang Google cho nhãn và giữ nguyên Export_to_Google làm tên.
- Chọn "Nút danh sách" làm Loại hiển thị.
- Chọn "Custom S-Control" làm Nguồn nội dung.
- Chọn "Display in existing window with sidebar" (Hiển thị trong cửa sổ hiện có có thanh bên) làm Hành vi.
- Chọn "export_contacts" trong trình đơn S-Control tuỳ chỉnh.
- Thêm nút này vào danh sách người liên hệ:
- Trong trình đơn "Thiết lập ứng dụng", hãy nhấp vào Tuỳ chỉnh | Danh bạ | Bố cục tìm kiếm.
- Nhấp vào Chỉnh sửa trong hàng "Chế độ xem danh bạ".
- Đánh dấu "Xuất sang Google" rồi nhấp vào mũi tên phải (>) để thêm nút này.
- Nhấp vào Lưu.
- Hãy dùng thử:
- Nhấp vào thẻ Người liên hệ.
- Chọn "Tất cả danh bạ" làm Chế độ xem rồi nhấp vào Đi!.
- Nhấp vào nút Xuất sang Google mới toanh.
- Xem "waiting_dots" nhưng đừng mong đợi điều gì khác xảy ra.
Tương tác với Google Trang tính
Nếu xem nguồn của Google Calendar Mash-up, bạn sẽ thấy tệp gcal_snippet.scf chứa một bản tóm tắt cho máy chủ Lịch Google. Để tương tác với Google Trang tính, bạn cần tạo một tệp tương tự cho máy chủ Google Trang tính. Tôi đã sử dụng lại mã của Ron Hess để dùng proxy AJAX của Salesforce.com và xác thực bằng Google AuthSub, đồng thời thay thế hàm ghi sự kiện vào Lịch Google bằng hàm ghi thông tin vào Google Trang tính. Bạn có thể xem toàn bộ nguồn cho tệp này trong gspreadsheet_snippet.scf.
Tiếp theo, tôi đã thêm JavaScript vào export_contacts.scf S-Control để truy vấn Salesforce.com về thông tin liên hệ và ghi thông tin đó vào một Bảng tính trên Google. Bạn có thể dễ dàng lấy dữ liệu ra khỏi Salesforce.com. Bạn chỉ cần tạo một truy vấn và cung cấp một hàm gọi lại để thực thi khi dữ liệu được trả về. Ví dụ:
var query = 'Select FirstName, LastName, Phone From Contact'; var queryResult = sforce.connection.query(query, queryCallback);
Sau khi có thông tin liên hệ từ Salesforce.com, bạn phải tìm ra nơi để xuất thông tin đó. Trong giao thức Dữ liệu của Google theo REST, mỗi bảng tính có thể được xác định bằng một URL riêng biệt. Bạn có thể lấy danh sách bảng tính của người dùng (và các URL liên kết) bằng cách truy vấn URL metafeed: http://spreadsheets.google.com/feeds/spreadsheets/private/full
. Phương thức sau đây sẽ lặp lại các bảng tính này, tìm kiếm một bảng tính có tiêu đề cụ thể. Khi tìm thấy bảng tính chính xác, trước tiên, hàm này sẽ lấy danh sách các trang tính, sau đó trả về URL nguồn cấp dữ liệu ô cho trang tính đầu tiên.
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); } } }
Bạn có thể xem thêm thông tin về các nguồn cấp dữ liệu có trong API dữ liệu của Google Trang tính trong Hướng dẫn tham khảo.
Hàm queryCallback
sử dụng phương thức getCellFeedUrl
để tìm URL nguồn cấp dữ liệu ô cần thiết để gửi yêu cầu cập nhật ô, sau đó ghi thông tin liên hệ vào từng ô.
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 }
Phương thức updateCell
có trong gspreadsheet_snippet.scf S-Control. Phương thức này lấy URL chỉnh sửa của ô trong hàng và cột đã cho, sau đó gửi một thông báo HTTP PUT
chứa nội dung biểu thị Dữ liệu của Google về ô đã cập nhật:
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); }
Bạn có thể tìm thêm thông tin về cách cập nhật các ô bằng Google Spreadsheets Data API trong Hướng dẫn dành cho nhà phát triển.
API dữ liệu của Google Trang tính sử dụng miền phụ https://spreadsheets.google.com
, vì vậy, trước khi mã ở trên hoạt động, bạn cần phải định cấu hình máy chủ proxy AJAX của Salesforce.com và thêm https://spreadsheets.google.com
.
Bạn cũng cần chuyển đến Google Tài liệu rồi tạo một bảng tính mới để lưu trữ dữ liệu. Hãy nhớ lưu tệp này dưới dạng Người liên hệ trên Salesforce.com.
Sau khi tải các S-Control này lên, bạn sẽ có thể xuất thông tin liên hệ của mình sang một bảng tính trên Google. Vậy còn cách khác thì sao? Với kiến thức mới về Salesforce.com và Google Data API, bạn cũng có thể viết một số mã để nhập thông tin liên hệ từ Google Trang tính vào Salesforce.com.
Kết luận
Bài viết này chỉ đề cập đến một phần nhỏ, nhưng giờ đây, khi bạn đã nắm được thông tin về nền tảng Salesforce.com và Google Data API, hãy nghĩ đến tất cả những ứng dụng mà bạn có thể viết để tận dụng các hệ thống mạnh mẽ này. Họ API Dữ liệu của Google luôn phát triển, cung cấp thêm thông tin để bạn khai thác trong các ứng dụng của mình, đồng thời nền tảng Salesforce.com cung cấp nhiều công cụ hữu ích chưa được đề cập trong bài viết này. Tôi sẽ tìm kiếm bản kết hợp tiếp theo của bạn trong AppExchange.
Chúc bạn lập trình vui vẻ!
Tài nguyên
- Tổng quan về Google Data API
- Hướng dẫn dành cho nhà phát triển về Data API của Google Trang tính
- Hướng dẫn dành cho nhà phát triển về API dữ liệu của Lịch Google
- Diễn đàn dành cho nhà phát triển API dữ liệu của Google
- Trung tâm tài nguyên của Google dành cho ADN
- Apex Wiki
- Xây dựng một ứng dụng kết hợp Lịch Google với SOA của Salesforce